ベンダー固有の関数 定数 定数とは、式で使用できる固定の値です。 演算子 演算子は、演算子の前か後ろにある値に適用する処理を指定します。演算子はデータ・アイテムを処理して結果を返すという意味で、関数と似ています。 日付 現在のシステム日付を挿入します。 日付時刻 現在のシステム日時を挿入します。 タイム・ゾーンを含む時刻 ゼロの時刻をタイム・ゾーンとともに挿入します。 タイム・ゾーンを含むタイム・スタンプ タイム・ゾーンを含むタイム・スタンプの例を挿入します。 偽の値を挿入します。 間隔 間隔は 0 になります:000 00:00:00.000。 年間隔 間隔は 0 年になります:0 年。 月間隔 間隔は 0 カ月になります:0 カ月。 年間隔 (月単位) 間隔は 0 年 0 カ月になります:0000-00 年~月。 日間隔 間隔は 0 日になります:0 日。 時間間隔 間隔は 0 時間になります:0 時間。 分間隔 間隔は 0 分になります:0 分。 秒間隔 間隔は 0 秒になります:0 秒。 日間隔 (時間単位) 間隔は 0 日 0 時間になります:0 00 日~時間。 日間隔 (分単位) 間隔は 0 日 0 時間 0 分になります:0 00:00 日~分。 日間隔 (秒単位) 間隔は 0 日 0 時間 0 分 0 秒になります:0 00:00:00.000000000 日~秒。 時間間隔 (分単位) 間隔は 0 時間 0 分になります:00:00 時間~分。 時間間隔 (秒単位) 間隔は 0 時間 0 分 0 秒になります:00:00:00.000000000 時間~秒。 分間隔 (秒単位) 間隔は 0 分 0 秒になります:00:00.000000000 分~秒。 条件に一致しない場合、Null を挿入します。 数値 0 を挿入します。この 0 は任意の数値に置き換えられます。 文字列 空の文字列を 2 つの一重引用符として挿入します。この中に文字列を入力できます。 時刻 現在のシステム時間を挿入します。 真の値を挿入します。
式の先頭であることを示します。 ( <式> ) 式の末尾であることを示します。 ( <式> ) 2 つの数値を乗算します。 <値 1> * <値 2> , 式コンポーネントを区切ります。 expression ( <パラメーター 1>, <パラメーター 2> ) 2 つの数値を除算します。 <値 1> / <値 2> 文字列を連結 (結合) します。 <文字列 1> || <文字列 2> 2 つの数値を加算します。 <値 1> + <値 2> 2 つの数値で減算を行うか、または任意の数値 1 つを負の値にします。 「値 1」-「値 2」または -「値」 「値 1」で表される値を「値 2」と比較し、「値 2」より小さい値を取得します。 <値 1> < <値 2> 「値 1」で表される値を「値 2」と比較し、「値 2」以下の値を取得します。 <値 1> <= <値 2> 「値 1」で表される値を「値 2」と比較し、「値 2」に等しくない値を取得します。 <値 1> <> <値 2> 「値 1」で表される値を「値 2」と比較し、「値 2」に等しい値を取得します。 <値 1> = <値 2> 「値 1」で表される値を「値 2」と比較し、「値 2」より大きい値を取得します。 <値 1> > <値 2> リテラル・メンバー式のコンポーネントを区切ります。 [ネームスペース].[ディメンション].[階層].[レベル]->[L1] 「値 1」で表される値を「値 2」と比較し、「値 2」以上の値を取得します。 <値 1> >= <値 2> この式の両側の条件が true の場合、「true」が返されます。 <引数 1> and <引数 2> クエリー内のグループ化された列に基づいて調整する範囲を定義するために、集計式とともに使用します。範囲はコンテキストに依存します。 aggregate_function ( <式> AUTO ) 値が指定の範囲内にあるかどうかを判定します。 <式> between <値 1> and <値 2> 例: [収益] between 200 and 300 結果: 収益が 200~300 の結果の数を返します。 Revenue Between ---- ---- $332.06 false $230.55 true $107.94 false when、then、else、end とともに使用します。Case は、when、then、else 操作が定義される、特定の状況の開始を識別します。 case <式> { when <式> then <式> } [ else <式> ] end 「文字列 1」に「文字列 2」が含まれるかどうかを判断します。この構文は次のメタキャラクターを両方ともサポートします。パーセント記号 (%) はゼロ個の文字、または 1 個以上の文字を表わし、下線記号 (_) は任意の文字を表します。オプションの LITERAL キーワードは、「%」と「_」を解釈する方法を示します。LITERAL キーワードがある場合は、「%」と「_」はメタキャラクターとして扱われません (例 3 と 5 を参照)。一方、LITERAL キーワードがない場合は、「%」と「_」はメタキャラクターとして扱われます (例 1、2、4 を参照)。 文字列 1 contains [LITERAL] 文字列 2 例 1: [PRODUCT_LINE] contains 'door' 結果 1: Outdoor Equipment 例 2: [PRODUCT_LINE] contains 'Golf%' 結果 2: Golf Equipment 例 3: [PRODUCT_LINE] contains literal 'Golf%' 結果 3: Golf% 例 4: [PRODUCT_LINE] contains 'Current_Year%' 結果 4: Current Year Price、Current Year Price%、Current_Year Price%。 例 5: [PRODUCT_LINE] contains literal 'Current_Year%' 結果 5: Current_Year%。 メンバー集計関数の最初の引数として使用できるキーワードです。この関数は、"GO データ・ウェアハウス (クエリー)"パッケージの"国別の総収入"サンプル・レポートで使用されています。 aggregate_function ( currentMeasure within set <式> ) current_date  データベースの現在の日付を返します。 current_date  lookup 要素とともに使用します。 lookup (....) in (....) default (....) 集計で使用されるキーワードで、識別可能な値のみを含める場合に使用します。関数 unique も参照してください。 distinct <データ・アイテム> 例: count ( distinct [注文内容 _ 数量] ) 結果:1704 if 要素、または case 要素とともに使用します。if 条件または case 式が true でない場合は、else 式が使用されます。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"2005 年小売業者上位 10 社"サンプル・レポートで使用されています。 if ( <条件> ) then .... else ( <式> ) , または case .... else ( <式> ) end case 要素または when 要素の末尾を示します。 case .... 終了 「文字列 1」が「文字列 2」で終了するかどうかを判定します。この構文は次のメタキャラクターを両方ともサポートします。パーセント記号 (%) はゼロ個の文字、または 1 個以上の文字を表わし、下線記号 (_) は任意の文字を表します。オプションの LITERAL キーワードは、「%」と「_」を解釈する方法を示します。LITERAL キーワードがある場合は、「%」と「_」はメタキャラクターとして扱われません (例 3 と 5 を参照)。一方、LITERAL キーワードがない場合は、「%」と「_」はメタキャラクターとして扱われます (例 1、2、4 を参照)。 文字列 1 ends with [LITERAL] 文字列 2 例 1: [PRODUCT_LINE] ends with 'Equipment' 結果 1: Camping Equipment、Golf Equipment 例 2: [PRODUCT_LINE] ends with '%Equipment' 結果 2: Golf Equipment、Camping Equipment 例 3: [PRODUCT_LINE] ends with literal 'Equipment%' 結果 3: Equipment% 例 4: [PRODUCT_LINE] ends with '%Price' 結果 4: Product Price、Current_Year Price 例 5: [PRODUCT_LINE] ends with literal '%Price' 結果 5: %Price パターン文字列の文字をエスケープするため、文字 "char" をオプションで使用して、「文字列 1」が「文字列 2」のパターンに一致するかどうかを判定します。 文字列 1 LIKE 文字列 2 [ ESCAPE char ] 例: [PRODUCT_LINE] like 'G%' 結果: 'G' で始まるすべての製品ライン。 例: [PRODUCT_LINE] like '%Ga%' escape 'a' 結果: 'G%' で終わるすべての製品ライン。 クエリーにおける集計範囲を定義するために、集計式とともに使用します。 aggregate_function ( <式> for <式> { , <式> } ) クエリー内のグループ化された列のサブセットに基づいて調整する範囲を定義するために、集計式とともに使用します。for 句と同じです。 aggregate_function ( <式> for ANY <式> { , <式> } ) クエリー内のグループ化された列 のうち指定されたものすべてを範囲として定義するために、集計式とともに使用します。for 句も参照してください。 aggregate_function ( <式> for ALL <式> { , <式> } ) 範囲をクエリー全体に設定するために、集計式とともに使用します。for 句も参照してください。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"返品および顧客満足度"サンプル・レポートで使用されています。 aggregate_function ( <式> for report ) then 要素および else 要素とともに使用します。if は条件を定義します。if 条件が true である場合は、then 式が使用されます。if 条件が true でない場合は、else 式が使用されます。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"2005 年小売業者上位 10 社"サンプル・レポートで使用されています。 if ( <条件> ) then ( <式> ) else ( <式> ) 「式 1」が指定された式のリストにあるかどうかを判定します。 <式 1> in ( <式リスト> ) 「式 1」が指定された定数値または範囲のリストにあるかどうかを判定します。 <式 1> in_range { <定数> : <定数> [ , <定数> : <定数> ] } 例: [コード] in_range { 5 } 結果: これは [コード] = 5 と同じです。 例: [コード] in_range { 5: } 結果: これは [コード] >= 5 と同じです。 例: [コード] in_range { :5 } 結果: これは [コード] <= 5 と同じです。 例: [コード] in_range { 5:10 } 結果: これは ( [コード] >= 5 and [コード] <= 10 ) と同じです。 例: [コード] in_range { :5,10,20: } 結果: これは ( [コード] <= 5 or [コード] = 10 or [コード] >= 20 ) と同じです。 「値」がデータ内で未定義であるかどうかを判定します。 <値> is missing 「値」がデータ内で未定義であるかどうかを判定します。 <値> is null 「値」がデータ内で定義済みであるかどうかを判定します。 <値> is not missing 「値」がデータ内で定義済みであるかどうかを判定します。 <値> is not null パターン文字列の文字をエスケープするため、文字 "char" をオプションで使用して、「文字列 1」が「文字列 2」のパターンに一致するかどうかを判定します。この構文は次のメタキャラクターを両方ともサポートします。パーセント記号 (%) はゼロ個の文字、または 1 個以上の文字を表わし、下線記号 (_) は任意の文字を表します。 文字列 1 LIKE 文字列 2 [ ESCAPE char ] 例 1: [PRODUCT_LINE] like 'G%' 結果 1: 'G' で始まるすべての製品ライン。 例 2: [PRODUCT_LINE] like '%Ga%' escape 'a' 結果 2: 'G%' で終わるすべての製品ライン。 例 3: [PRODUCT_LINE] like 'C_R_' 結果 3: CARS または CARD という名前のすべての製品ライン。 例: lookup ( [国]) in ( 'カナダ'--> ( [表示価格] * 0.60), 'オーストラリア'--> ( [表示価格] * 0.80 ) ) default ( [表示価格] ) データを検索して、指定した値と置き換えます。可能であれば、case 構文を使用してください。 lookup ( <名前> ) in ( <値 1> --> <値 2> ) default ( <式> ) 「引数」が false である場合は TRUE を、「引数」が true である場合は FALSE を返します。 NOT <引数> 「引数 1」または「引数 2」が true である場合に TRUE を返します。 <引数 1> or <引数 2> 概要フィルターを適用する前に集計計算を行います。 <集計関数> ([<式>] prefilter) 例: total ( [<数量>] for report prefilter ) 概要フィルター: total( [<数量>] for [<製品番号>] ) > 50000 結果: 概要フィルターの適用前にレポート内の数量を合計します。 PNo Total Total Total forPNo forRep forRep_Prefilter --------- -------- ---------- ------------------- 88 54928 298140 2215354 89 51126 298140 2215354 90 69996 298140 2215354 94 69004 298140 2215354 95 53086 298140 2215354 クエリーで出力された行の数を数えます。Count() とともに使用します。 count ( ROWS ) クエリーで出力された行の数を数えます。Count() とともに使用します。 count ( ROWS  [ 式 ]) 「文字列 1」が「文字列 2」で開始するかどうかを判定します。この構文は次のメタキャラクターを両方ともサポートします。パーセント記号 (%) はゼロ個の文字、または 1 個以上の文字を表わし、下線記号 (_) は任意の文字を表します。オプションの LITERAL キーワードは、「%」と「_」を解釈する方法を示します。LITERAL キーワードがある場合は、「%」と「_」はメタキャラクターとして扱われません (例 3 と 5 を参照)。一方、LITERAL キーワードがない場合は、「%」と「_」はメタキャラクターとして扱われます (例 1、2、4 を参照)。 文字列 1 starts with [LITERAL] 文字列 2 例 1: [PRODUCT_LINE] starts with 'Golf' 結果 1: Golf Equipment 例 2: [PRODUCT_LINE] starts with 'Outdoor%' 結果 2: Outdoor Equipment 例 3: [PRODUCT_LINE] starts with literal 'Golf%' 結果 3: Golf% 例 4: [PRODUCT_LINE] starts with 'Current_Year%' 結果 4: Current Year Price、Current Year Price%、Current_Year Price% 例 5: [PRODUCT_LINE] starts with literal 'Current_Year%' 結果 5: Current_Year% if 要素、または case 要素とともに使用します。if 条件または when 式が true である場合は、then 式が使用されます。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"2005 年小売業者上位 10 社"サンプル・レポートで使用されています。 if ( condition ) then ...、または case 式 when 式 then .... 終了 case 要素とともに使用します。WHEN 式が true である場合に条件が発生するよう定義できます。 case [<式>] when .... end
集計 このリストには、関連する一連の値に対する集計値、または関連する一連の値の各インスタンスに対しそれぞれ異なる集計値を返す、あらかじめ定義された関数が含まれています。 式の集計タイプに基づき、適切な集計関数を使用して算出値を返します。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"予算と実績"サンプル・レポートで使用されています。 aggregate ( <式> [ auto ] ) aggregate ( <式> for [ all|any ] <式> { , <式> } ) aggregate ( <式> for report ) 選択したデータ・アイテムの平均値を返します。Distinct は、前バージョンの製品と互換性がある代替式です。 average ( [ distinct ] <式> [ auto ] ) average ( [ distinct ] <式> for [ all|any ] <式> { , <式> } ) average ( [ distinct ] <式> for report ) 例: average ( 販売 ) 結果: 全売上値の平均を返します。 選択したデータ・アイテムのうち、Null 値でないものの数を返します。Distinct は、前バージョンの製品と互換性がある代替式です。All は DQM モードだけでサポートされています。これによりディメンション表のデータ・アイテムの二重カウントの推定が回避されます。 count ( [ all | distinct ] <式> [ auto ] ) count ( [ all | distinct ] <式> for [ all|any ] <式> { , <式> } ) count ( [ all | distinct ] <式> for report ) 例: count ( 売上 ) 結果: "売上" の合計エントリー数を返します。 選択したデータ・アイテムの最大値を返します。Distinct は、前バージョンの製品と互換性がある代替式です。 maximum ( [ distinct ] <式> [ auto ] ) maximum ( [ distinct ] <式> for [ all|any ] <式> { , <式> } ) maximum ( [ distinct ] <式> for report ) 例: maximum ( 売上 ) 結果: 売上値の最大値を返します。 選択したデータ・アイテムの中央値を返します。 median ( <式> [ auto ] ) median ( <式> for [ all|any ] <式> { , <式> } ) median ( <式> for report ) 選択したデータ・アイテムの最小値を返します。Distinct は、前バージョンの製品と互換性がある代替式です。 minimum ( [ distinct ] <式> [ auto ] ) minimum ( [ distinct ] <式> for [ all|any ] <式> { , <式> } ) minimum ( [ distinct ] <式> for report ) 例: minimum ( 売上 ) 結果: 売上値の最小値を返します。 指定された数の行の指定された一連の値に対する移動平均を行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 moving-average ( <数値> , <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) moving-average (  <数値> , <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: moving-average ( 数量 , 3 ) 結果: 各行に対し、数量と、現在の行と先行する 2 つの行との移動平均を返します。 Qty Moving-Average (Qty, 3) ------ ------------------------------------ 200 200 700 450 400 433.3333 200 433.3333 200 266.6667 500 300.0000 指定された数の行の指定された一連の値に対する移動合計を行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 moving-total ( <数値> , <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) moving-total (  <数値> , <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: moving-total ( 数量 , 3 ) 結果: 各行に対し、数量と、現在の行と先行する 2 つの行との移動合計を返します。 Qty Moving-Total (Qty, 3) ------ -------------------------------- 200 200 700 900 400 1300 200 1300 200 800 500 900 選択したデータ・アイテムが全体に占める割合を返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。この関数は、"Percentage Calculation (by year)"双方向サンプル・レポートで使用されています。 percentage ( <数値> [ at <式>  { , <式> } ] [ <for オプション> ] [ prefilter ] ) percentage (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: percentage ( 販売 98 ) 結果: 販売員ごとに、1998 年の売上を割合として返します。 Employee Sales 98 Percentage --------- --------- ------------- Gibbons 60646 7.11% Flertjan 62523 7.35% Cornel 22396 2.63% 選択したデータ・アイテム以下のものの割合を表す、1 から 100 の範囲の値を返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 percentile ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) percentile (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: percentile ( 売上 98 ) 結果: 各行に対し、その行の数量値以下の行の割合を返します。 Qty Percentile (Qty) ------ ----------------- 800 1 700 0.875 600 0.75 500 0.625 400 0.5 400 0.5 200 0.25 200 0.25 指定した範囲内の値のランキングを返します。戻り値は、ランクの範囲を表す任意の整数値となります。例えば、1 (最高) から 100 (最低) などです。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 quantile ( <数値> , <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) quantile (  <数値> , <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: quantile ( 数量 , 4 ) 結果: 数量、その数量値全体における順位、順位に従って 4 つの分位数グループに分けた場合の番号 (四分位数) を返します。 Qty Rank Quantile (Qty, 4) ------ ------- --------------- 800 1 1 700 2 1 600 3 2 500 4 2 400 5 3 400 5 3 200 7 4 200 7 4 一連の値における値のランキングを、1 (最高) から 4 (最低) の整数値で返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 quartile ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) quartile (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: quartile ( 数量 ) 結果: 数量と、その数量値全体における順位に従って 4 つのグループに分けた場合の番号を、最高を 1、最低を 4 として返します。 Qty Quartile (Qty) ------ --------------------- 450 1 400 1 350 2 300 2 250 3 200 3 150 4 100 4 選択したデータ・アイテムのランク値を返します。ソート順序はオプションです。デフォルトでは降順 (DESC) が想定されます。複数の行で値が同じ場合は、こらの行に同じランキングが割り当てられ、次のランキングの値が飛びます。これは「オリンピック・ランキング」とも呼ばれます。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。Distinct は、前バージョンの製品と互換性がある代替式です。Null 値のランキングは最後になります。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"2005 年小売業者上位 10 社"サンプル・レポートで使用されています。 rank ( <式> [ ASC|DESC ] { , <式> [ ASC|DESC ] } [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) rank ( [ distinct ] <式> [ ASC|DESC ] { , <式> [ ASC|DESC ] } [ <for オプション>] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: rank ( 売上 98 ) 結果: 各行に対し、販売員ごとの 1998 年の売上の順位を返します。同じ値の行がある場合は、一部のランク値がスキップされます。 Employee Sales 98 Rank --------- --------- ------------ Gibbons 60000 1 Flertjan 50000 2 Cornel 50000 2 Smith 48000 4 一連の値に対する移動平均を、現在の行を含め、行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-average ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-average (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-average ( 数量 ) 結果: 各行に対し、数量と、現在の行およびそれ以前の行の移動平均を返します。 Name Qty Avg Running-Average for name ------- ------ ------ ----------------------- Smith 7 5 7 Smith 3 5 5 Smith 6 5 5.33 Smith 4 5 5 Wong 3 4 3 Wong 5 4 4 一連の値に対する累積合計を、現在の行を含め、行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-count ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-count (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-count ( 数量 ) 結果: 各行に対し、数量と、現在の行の位置における累積件数を返します。 Name Qty Count Running-Count for name ------- ------ --------- ------------------------ Smith 7 4 1 Smith 3 4 2 Smith 6 4 3 Smith 4 4 4 Wong 3 3 1 Wong 5 3 2 現在の行を含め、一連の値に対して、前行と現在行の値の差を算出した累積分を行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-difference ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-difference (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-difference ( 数量 ) 結果: 各行に対し、数量と、現在の行の値とその前の行の値との間の累積差分を返します。 Name Qty Running-Difference for name ------- ------ --------------------------- Smith 7 NULL Smith 3 -4 Smith 6 3 Smith 4 -2 Wong 3 -1 Wong 5 2 一連の値に対する累積最大値を、現在の行を含め、行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-maximum (  <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-maximum (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-maximum ( 数量 ) 結果: 各行に対し、数量と、現在の行およびそれ以前の行の累積最大値を返します。 Name Qty Max Running-Maximum (Qty) for name ------- ------ ------ ------------------------- Smith 2 7 2 Smith 3 7 3 Smith 6 7 6 Smith 7 7 7 Wong 3 5 3 Wong 5 5 5 一連の値に対する累積最小値を、現在の行を含め、行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-minimum ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-minimum (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-minimum ( 数量 ) 結果: 各行に対し、数量と、現在の行およびそれ以前の行の累積最小値を返します。 Name Qty Min Running-Minimum (Qty) for name ------- ----- ------ -------------------------- Smith 7 2 7 Smith 3 2 3 Smith 6 2 3 Smith 2 2 2 Wong 4 3 4 Wong 5 3 4 現在の行を含め、一連の値に対する累積合計を行ごとに返します。<for オプション> によって関数の範囲が定義されます。at オプションでは集計のレベルが定義されます。これは、リレーショナル・データ・ソースのコンテキストでのみ使用できます。 running-total ( <数値> [ at <式> { , <式> } ] [ <for オプション> ] [ prefilter ] ) running-total (  <数値> [ <for オプション> ] [ prefilter ] ) <for オプション> ::= for <式> { , <式> }|for report|auto 例: running-total ( 数量 ) 結果: 各行に対し、数量と、現在の行およびそれ以前の行の累計を返します。 Name Qty Total Running-Total (Qty) for name ------- ------ -------- ------------------------- Smith 2 18 2 Smith 3 18 5 Smith 6 18 11 Smith 7 18 18 Wong 3 12 3 Wong 5 12 8 選択したデータ・アイテムの標準偏差を返します。 standard-deviation (  <式> [ auto ] ) standard-deviation (  <式> for [ all|any ] <式> { , <式> } ) standard-deviation (  <式> for report ) 例: standard-deviation ( 製品原価 ) 結果: 平均製品原価に対する各製品原価の偏差値を返します。 母標準偏差を算出し、母分散の平方根を返します。 standard-deviation-pop (  <式> [ auto ] ) standard-deviation-pop (  <式> for [ all|any ] <式> { , <式> } ) standard-deviation-pop (  <式> for report ) 例: standard-deviation-pop ( 製品原価 ) 結果: 母分散の平方根を返します。 標本標準偏差を算出し、母分散の平方根を返します。 standard-deviation-samp (  <式> [ auto ] ) standard-deviation-samp (  <式> for [ all|any ] <式> { , <式> } ) standard-deviation-samp (  <式> for report ) 例: standard-deviation-samp ( 製品原価 ) 結果: 標本分散の平方根の値を返します。 任意のグループの値における値のランキングを、高、中央、低で返します。 tertile (  <式> [ auto ] ) tertile (  <式> for [ all|any ] <式> { , <式> } ) tertile (  <式> for report ) 例: tertile ( 数量 ) 結果: 数量、その数量値全体における順位に従って 3 つのグループに分けた場合の番号、および 3 分位数値を返します。 Qty Quantile (Qty, 3) Tertile (Qty) ------ ------------------------ ------------------ 800 1 H 700 1 H 500 2 M 400 2 M 200 3 L 200 3 L 選択したデータ・アイテムの合計値を返します。Distinct は、前バージョンの製品と互換性がある代替式です。この関数は、"GO データ・ウェアハウス (分析)"パッケージの"予算と実績"サンプル・レポートで使用されています。 total ( [ distinct ] <式> [ auto ] ) total ( [ distinct ] <式> for [ all|any ] <式> { , <式> } ) total ( [ distinct ] <式> for report ) 例: total ( 売上 ) 結果: "売上" の合計値を返します。 統計関数 これは統計的な性質を持つ、あらかじめ定義された集計関数のリストです。 選択したデータ アイテムの分散を返します。前バージョンの製品で使用されていた式の下位互換性を維持するために、distinct キーワードが用意されています。 variance (  <式> [ auto ] ) variance (  <式> for [ all|any ] <式> { , <式> } ) variance (  <式> for report ) 例: variance ( 製品原価 ) 結果: 平均製品原価に対して、各製品原価の差異がどの程度あるかを返します。 任意の数字のセットから Null を削除したあとの母分散を返します。 variance-pop (  <式> [ auto ] ) variance-pop (  <式> for [ all|any ] <式> { , <式> } ) variance-pop (  <式> for report ) 例: variance-pop ( 数量 ) 結果: 各行に対し、任意の数字のセットから Null を削除した後の母分散を返します。 任意の数字のセットから Null を削除したあとの標本分散を返します。 variance-samp (  <式> [ auto ] ) variance-samp (  <式> for [ all|any ] <式> { , <式> } ) variance-samp (  <式> for report ) 例: variance-samp ( 数量 ) 結果: 各行に対し、任意の数字のセットから Null を削除した後の標本分散を返します。 corr ( <数値 1> ,  <数値 2>  [ auto ] ) corr ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) corr ( <数値 1> ,  <数値 2> for report ) 一連の数値ペアの相関係数を戻します。これは、次のようにして計算されます。 COVAR_POP(<数値 1>, <数値 2>) / (STDDEV_POP(<数値 1>) * STDDEV_POP(<数値 2>)) 例: corr ( 経費 ,  利益幅  for report) 結果:「経費」と「利益幅」の間の相関係数 Cost Margin corr (Cost, Margin for report) ------- ---------- ----------------------------------------- 4 0.33 0.0872648 5 0.28 0.0872648 9.22 0.23 0.0872648 15.93 0.28 0.0872648 34.97 0.3 0.0872648 covariance-pop ( <数値 1> ,  <数値 2> ) covariance-pop ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) covariance-pop ( <数値 1> ,  <数値 2> for report ) 一連の数値ペアの母集団共分散を返します。 例: covariance-pop ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の間の母集団共分散 Cost Margin covariance-pop (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.032384 5 0.28 0.032384 9.22 0.23 0.032384 15.93 0.28 0.032384 34.97 0.3 0.032384 covariance-samp ( <数値 1> ,  <数値 2> ) covariance-samp ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) covariance-samp ( <数値 1> ,  <数値 2> for report ) 一連の数値ペアの標本共分散を返します。 例: covariance-samp ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の間の標本共分散 Cost Margin covariance-samp (Cost, Margin for report) ------- ---------- ------------------------------------------------------------ 4 0.33 0.04048 5 0.28 0.04048 9.22 0.23 0.04048 15.93 0.28 0.04048 34.97 0.3 0.04048 regression-average-x ( <数値 1> ,  <数値 2> ) regression-average-x ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-average-x ( <数値 1> ,  <数値 2> for report ) 回帰線の独立変数 (<数値 2>) の平均を戻します。 例: regression-average-x ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の「利益幅」の平均。 Cost Margin regression-average-x (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 0.284 5 0.28 0.284 9.22 0.23 0.284 15.93 0.28 0.284 34.97 0.3 0.284 regression-average-y ( <数値 1> ,  <数値 2> ) regression-average-y ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-average-y ( <数値 1> ,  <数値 2> for report ) 回帰線の従属変数 (<数値 1>) の平均を戻します。 例: regression-average-y ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の「経費」の平均。 Cost Margin regression-average-y (Cost, Margin for report) ------- ---------- ----------------------------------------------------------------- 4 0.33 13.824 5 0.28 13.824 9.22 0.23 13.824 15.93 0.28 13.824 34.97 0.3 13.824 regression-count ( <数値 1> ,  <数値 2> ) regression-count ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-count ( <数値 1> ,  <数値 2> for report ) 回帰線に適合させるために使用する Null でない数値を返します。 例: regression-count ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線に適合させるために使用する Null でない数値。 Cost Margin regression-count (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 5 5 0.28 5 9.22 0.23 5 15.93 0.28 5 34.97 0.3 5 regression-intercept ( <数値 1> ,  <数値 2> ) regression-intercept ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-intercept ( <数値 1> ,  <数値 2> for report ) 回帰線の y 切片を返します。これは、次のようにして計算されます。 AVG(<数値 1>) - REGR_SLOPE(<数値 1>, <数値 2>) * AVG(<数値 2>) 例: regression-intercept ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の y 切片。 Cost Margin regression-intercept (Cost, Margin for report) ------- ---------- ---------------------------------------------------------------- 4 0.33 5.18015038 5 0.28 5.18015038 9.22 0.23 5.18015038 15.93 0.28 5.18015038 34.97 0.3 5.18015038 regression-r2 ( <数値 1> ,  <数値 2> ) regression-r2 ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-r2 ( <数値 1> ,  <数値 2> for report ) 回帰線の決定係数 ("R の 2 乗" または "適合度" とも呼ばれる) を返します。この値は以下の条件に基づいて計算されます。 IF VAR_POP(<数値 2>) = 0 THEN NULL IF VAR_POP(<数値 1>) = 0 AND VAR_POP(<数値 2>) <> 0 THEN 1 IF VAR_POP(<数値 1>) > 0 and VAR_POP(<数値 2>) <> 0 THEN POWER(CORR (<数値 1>, <数値 2>)) 例: regression-r2 ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の決定係数。 Cost Margin regression-r2 (Cost, Margin for report) ------- ---------- ------------------------------------------------------ 4 0.33 0.00761514 5 0.28 0.00761514 9.22 0.23 0.00761514 15.93 0.28 0.00761514 34.97 0.3 0.00761514 regression-slope ( <数値 1> ,  <数値 2> ) regression-slope ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-slope ( <数値 1> ,  <数値 2> for report ) 回帰線の傾きを返します。これは、次のようにして計算されます。 COVAR_POP(<数値 1>,<数値 2>) / VAR_POP(<数値 2>) 例: regression-slope ( 経費 ,  利益幅 ) 結果: 「経費」と「利益幅」の回帰線の傾き。 Cost Margin regression-slope (Cost, Margin for report) ------- ---------- ----------------------------------------------------------- 4 0.33 30.43609023 5 0.28 30.43609023 9.22 0.23 30.43609023 15.93 0.28 30.43609023 34.97 0.3 30.43609023 regression-sxx ( <数値 1> ,  <数値 2> ) regression-sxx ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-sxx ( <数値 1> ,  <数値 2> for report ) NULL のペアを除去した後で、次の計算を返します。 REGR_COUNT(<数値 1>, <数値 2>) * VAR_POP(<数値 2>) 例: regression-sxx ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の sxx 計算。 Cost Margin regression-sxx (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.00532 5 0.28 0.00532 9.22 0.23 0.00532 15.93 0.28 0.00532 34.97 0.3 0.00532 regression-sxy ( <数値 1> ,  <数値 2> ) regression-sxy ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-sxy ( <数値 1> ,  <数値 2> for report ) NULL のペアを除去した後で、次の計算を返します。 REGR_COUNT(<数値 1>, <数値 2>) * COVAR_POP(<数値 1>, <数値 2>) 例: regression-sxy ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の sxy 計算。 Cost Margin regression-sxy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 0.16192 5 0.28 0.16192 9.22 0.23 0.16192 15.93 0.28 0.16192 34.97 0.3 0.16192 regression-syy ( <数値 1> ,  <数値 2> ) regression-syy ( <数値 1> ,  <数値 2> for [ all|any ] <式> { , <式> } ) regression-syy ( <数値 1> ,  <数値 2> for report ) NULL のペアを除去した後で、次の計算を返します。 REGR_COUNT(<数値 1>, <数値 2>) * VAR_POP(<数値 1>) 例: regression-syy ( 経費 ,  利益幅  for report) 結果: 「経費」と「利益幅」の回帰線の syy 計算。 Cost Margin regression-syy (Cost, Margin for report) ------- ---------- --------------------------------------------------------- 4 0.33 647.15932 5 0.28 647.15932 9.22 0.23 647.15932 15.93 0.28 647.15932 34.97 0.3 647.15932 メンバー集計関数 メンバーのセットに対して 1 つの集計値を返す、またはメンバーのセットの各メンバーに対して異なる集計値を返す、あらかじめ定義された関数のリストです。
エラー ハイライトされている部分にエラーがあります。
構成体 このリストには、式を作成するのに使用できる構成体とテンプレートが含まれています。テンプレートでは、複数の関数が組み合わされてグループになっています。例えば、case (検索) テンプレートには、case、when、else、end 関数が含まれています。 case (検索) この構成体は、CASE、WHEN、ELSE、および END 関数を含む、case (検索) のテンプレートです。 CASE WHEN [国] = 'カナダ' THEN ([表示価格] * 0.60) WHEN [国コード] > 100 THEN [表示価格] * 0.80 ELSE [表示価格] END 単純な case この構成体は、CASE、WHEN、ELSE、および END 関数を含む、単純な case のテンプレートです。 CASE [国] WHEN 'カナダ' THEN ([表示価格] * 0.60) WHEN 'オーストラリア' THEN [表示価格] * 0.80 ELSE [表示価格] END if then else この構成体は、if...then...else 文のテンプレートです。この構成体は、"GO データ・ウェアハウス (分析)"パッケージの"2005 年小売業者上位 10 社"サンプル・レポートで使用されています。 IF ([国] = 'カナダ') THEN ([表示価格] * 0.60) ELSE ([表示価格]) in_range これは、in_range 式のテンプレートです。 [コード] IN_RANGE { :30 , 40, 50, 999: } 例: [コード] IN_RANGE { 5 } 結果: これは [コード] = 5 と同じです。 例: [コード] IN_RANGE { 5: } 結果: これは [コード] >= 5 と同じです。 例: [コード] IN_RANGE { :5 } 結果: これは [コード] <= 5 と同じです。 例: [コード] IN_RANGE { 5:10 } 結果: これは ( [コード] >= 5 and [コード] <= 10 ) と同じです。 例: [コード] IN_RANGE { :5,10,20: } 結果: これは ( [コード] <= 5 or [コード] = 10 or [コード] >= 20 ) と同じです。
期間の述部 このリストには、期間式を比較するために使用する述語が含まれています。 が次の値を含む "period_expression1" に "period_expression2" が含まれる場合、つまり、最初の期間に日時値、または 2 番目の期間内のすべての値が含まれる場合は、"true" を返します。 period_expression1 contains ( period_expression2 | datetime_expression ) period( 1989-11-01, 1991-05-19 ) contains period( 1991-05-19, 1991-06-04 ) 結果: false period( 1989-11-01, 1991-05-19 ) contains period( 1990-05-19, 1991-04-04 ) 結果: true period( 1989-11-01, 1991-05-19 ) contains 1991-04-04 結果: true equals "period_expression1" と "period_expression2" の期間開始値と期間終了値が同じ場合は "true" を返します。 period_expression1 equals period_expression2 period( 1989-11-01, 1991-05-19 ) equals period( 1989-11-01, 1991-05-19 ) 結果: true immediately precedes "period_expression1" が "period_expression2" の直前にある場合、最初の期間の終了値が 2 番目の期間の開始値と等しい場合は、"true" を返します。 period_expression1 immediately precedes period_expression2 period( 1989-11-01, 1991-05-19 ) immediately precedes period( 1991-05-19, 1991-06-04 ) 結果: true period( 1989-11-01, 1991-05-18 ) immediately precedes period( 1991-05-19, 1991-06-04 ) 結果: false immediately succeeds "period_expression1" が "period_expression2" の直後にある場合、つまり最初の期間の開始値が 2 番目の期間の終了値と等しい場合は、"true" を返します。 period_expression1 immediately succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-19, 1991-05-19 ) 結果: true period( 1991-05-19, 1994-01-10 ) immediately succeeds period( 1991-01-20, 1991-05-18 ) 結果: false overlaps "period_expression1" と "period_expression2" が重複する場合、つまり少なくとも 1 つの値が共通している場合は、"true" を返します。 period_expression1 overlaps period_expression2 period( 1991-05-19, 1994-01-10 ) overlaps period( 1993-01-19, 1995-05-19 ) 結果: true precedes "period_expression1" が "period_expression2" より前にある場合、つまり最初の期間に含まれるすべての値が 2 番目の期間の開始値以下である場合は、"true" を返します。 period_expression1 precedes period_expression2 period( 1989-11-01, 1991-05-19 ) precedes period( 1991-05-19, 1991-06-04 ) 結果: true period( 1989-11-01, 1991-05-18 ) precedes period( 1991-05-19, 1991-06-04 ) 結果: true succeeds "period_expression1" が "period_expression2" より後にある場合、つまり最初の期間に含まれるすべての値が 2 番目の期間の終了値以上である場合は、"true" を返します。 period_expression1 succeeds period_expression2 period( 1991-05-19, 1994-01-10 ) succeeds period( 1991-01-19, 1991-05-19 ) 結果: true period( 1991-05-20, 1994-01-10 ) succeeds period( 1991-01-20, 1991-05-19 ) 結果: true
ビジネス日時関数 このリストには、日付や時間の計算を実行するビジネス関数が含まれています。 _add_seconds ( <時刻>, <整数> ) 「整数」秒数を「時刻」に加算した結果を、「時刻」の書式に基づいて時刻か日時で返します。 Example: _add_seconds ( 13:04:59 , 1 ) 結果: 13:05:00 例: _add_seconds ( 2002-04-30 12:10:10.000, 1 ) 結果: 2002-04-30 12:10:11.000 例: _add_seconds ( 2002-04-30 00:00:00.000, 1/100 ) 2 番目の引数は整数ではない点に注意してください。これはデータベース技術でサポートされ、時刻部分の値をインクリメントします。 結果: 2002-04-30 00:00:00.010 _add_minutes ( <時刻>, <整数> ) 「整数」分値を「時刻」に加算した結果を、「時刻」の書式に基づいて時刻か日時で返します。 例: _add_minutes ( 13:59:00 , 1 ) 結果: 14:00:00 例: _add_minutes ( 2002-04-30 12:59:10.000, 1 ) 結果: 2002-04-30 13:00:10.000 例: _add_minutes ( 2002-04-30 00:00:00.000, 1/60 ) 2 番目の引数は整数ではない点に注意してください。これはデータベース技術でサポートされ、時刻部分の値をインクリメントします。 結果: 2002-04-30 00:00:01.000 _add_hours ( <時刻>, <整数> ) 「整数」時間値を「時刻」に加算した結果を、「時刻」の書式に基づいて時刻か日時で返します。 例: _add_hours ( 13:59:00 , 1 ) 結果: 14:59:00 例: _add_hours ( 2002-04-30 12:10:10.000, 1 ) 結果: 2002-04-30 13:10:10.000, 例: _add_hours ( 2002-04-30 00:00:00.000, 1/60 ) 2 番目の引数は整数ではない点に注意してください。これはデータベース技術でサポートされ、時刻部分の値をインクリメントします。 結果: 2002-04-30 00:01:00.000 _add_days ( <日付>, <整数> ) 「整数」日数を「日付」に加算した結果を、「日付」の書式に基づいて日付か日時で返します。 例: _add_days ( 2002-04-30 , 1 ) 結果: 2002-05-01 例: _add_days ( 2002-04-30 12:10:10.000, 1 ) 結果: 2002-05-01 12:10:10.000 例: _add_days ( 2002-04-30 00:00:00.000, 1/24 ) 2 番目の引数は整数ではない点に注意してください。これはデータベース技術でサポートされ、時刻部分の値をインクリメントします。 結果: 2002-04-30 01:00:00.000 _add_months ( <日付>, <整数> ) 「整数」月数を「日付」に加算します。結果の月の実際の日数が日付部分より少ない場合は、結果の月の最終日が戻されます。その他のすべての場合、戻り値の日付部分は「日付」と同じになります。 例: _add_months ( 2012-04-15 , 3 ) 結果: 2012-07-15 結果は、結果の月の最終日ではありません。 例: _add_months ( 2012-02-29 , 1 ) 結果: 2012-03-29 月の最終日を戻すには、関数 _last_of_month を使用してください。 例: _last_of_month ( _add_months ( 2012-02-29 , 1 ) ) 結果: 2012-03-31 結果の月の最終日に日付が調整されます。 例: _add_months ( 2012-01-31 , 1 ) 結果: 2012-02-29 タイム・スタンプに加算します。 例: _add_months ( 2002-04-30 12:10:10.000 , 1 ) 結果: 2002-05-30 12:10:10.000 _add_years ( <日付>, <整数> ) 「整数」年数を「日付」に加算します。「日付」が 2 月 29 日で結果の年がうるう年でない場合、結果の日付は 2 月 28 日になります。その他の場合、戻り値の日と月は「日付」と同じになります。 例: _add_years ( 2012-04-15 , 1 ) 結果: 2013-04-15 うるう年でない場合、2 月 29 日は調整されます。 例: _add_years ( 2012-02-29 , 1 ) 結果: 2013-02-28 タイム・スタンプに加算します。 例: _add_years ( 2002-04-30 12:10:10.000 , 1 ) 結果: 2003-04-30 12:10:10.000 _age ( <日付> ) 今日の日付から <日付> を引いた数を返します。この戻り値の書式は YYYYMMDD です。YYYY は年数、MM は月数、DD は日数を表します。 例: _age ( 1990-04-30 ) (今日の日付が 2003-02-05 の場合) 結果:120906 が返されます。12 年 9 カ月 6 日を意味します。 _date_to_int ( date_expression ) "date_expression" の整数表現を返します。この戻り値の書式は YYYYMMDD です。YYYY は年数、MM は月数、DD は日数を表します。 例: _date_to_int ( 2003-01-01 ) 結果: 20030101 _day_of_week ( <日付>, integer ) 曜日を 1~7 の整数で返します。1 は、2 番目のパラメーターで指定される週の最初の日となります。2 番目のパラメーターは 1~7 の整数で指定し、1 が月曜日、7 が日曜日を表します。ISO 8601 標準では、週の初日は月曜日である 1 となります。 例: _day_of_week ( 2003-01-01 , 1 ) 結果: 3 _day_of_year ( <日付> ) <日付> の元旦からの日数を 1~366 の整数で返します。この値は、ユリウス日 (Julian Day) ともいいます (注: ユリウス通日 - Julian Day numbers - とは違います)。 例: _day_of_year ( 2003-03-01 ) 結果: 61 _days_between ( <日付 1> , <日付 2> ) <日付 1> と <日付 2> の間の日数を、正または負の数で返します。"<日付 1>" が "<日付 2>" よりも前の日付である場合、結果は負の値になります。 例: _days_between ( 2002-06-21 , 2002-04-30 ) 結果: 52 例: _days_between ( 2002-04-30 , 2002-06-21 ) 結果: -52 _days_to_end_of_month ( <日付> ) 「日付」の日からその月の末日までの日数を表す数値を返します。 例: _days_to_end_of_month ( 2002-04-20 14:30:22.123 ) 結果: 10 _first_of_month ( <日付> ) 「日付」の月の最初の日を、引数に基づいて日付型または日時型で返します。 例: _first_of_month ( 2002-04-20 ) 結果: 2002-04-01 例: _first_of_month ( 20.04.02 12:10:10.000 ) 結果: 2002-04-01 12:10:10.000 _last_of_month ( <日付> ) 「日付」の月の最終日を、引数に基づいて日付型または日時型で返します。 例: _last_of_month ( 2002-01-14 ) 結果: 2002-01-31 例: _last_of_month ( 2002-01-14 12:10:10.000 ) 結果: 2002-01-31 12:10:10.000 _make_timestamp ( <整数 1>, <整数 2>, <整数 3> ) 引数からタイム・スタンプを作成して返します。<整数 1> は年、<整数 2> は月、<整数 3> は日となります。時刻の部分はデフォルトの 00:00:00.000 になります。 例: _make_timestamp ( 2002 , 01 , 14 ) 結果: 2002-01-14 00:00:00.000 _months_between ( <日付 1>, <日付 2> ) <日付 1> と <日付 2> の間の月数を、正または負の整数で返します。「日付 1」が「日付 2」よりも前の日付である場合、結果は負の値になります。 例: _months_between ( 2002-04-03 , 2002-01-30 ) 結果: 2 例: _months_between ( 2002-01-30 , 2002-04-03 ) 結果: -2 _shift_timezone ( timestamp_value , from_time_zone , target_time_zone ) _shift_timezone ( timestamp_with_time_zone_value , target_time_zone ) タイム・スタンプ値を、あるタイム・ゾーンから別のタイム・ゾーンに変換します。該当する場合、この関数は夏時間に対応します。最初の引数が「タイム・スタンプ」型である場合、2 番目の引数および 3 番目の引数はそれぞれ「開始」のタイム・ゾーンおよび「ターゲット」のタイム・ゾーンを表します。最初の引数が「タイム・ゾーンを含むタイム・スタンプ」型である場合、「開始」のタイム・ゾーンが既に最初の引数で暗示されているため、2 番目の引数は「ターゲット」のタイム・ゾーンを表します。最初の引数のデータ型は、戻り値のデータ型も決定します。2 番目の引数および 3 番目の引数は文字列型で、タイム・ゾーン識別子を表します。これらの識別子のリストは以下にあります。 注: この関数を使用すると、ローカル処理が発生します。 例: _shift_timezone( 2013-06-30 12:00:00 , 'America/New_York' , 'GMT' ) 結果: 2013-06-30 16:00:00 例: _shift_timezone( 2013-11-30 12:00:00-05:00 , 'America/Vancouver' ) 結果: 2013-11-30 09:00:00-08:00 タイム・ゾーン ID: GMT (GMT+00:00) Greenwich Mean Time Europe/Lisbon (GMT+00:00) Portugal Time (Lisbon) Europe/Amsterdam (GMT+01:00) Netherlands Time Europe/Paris (GMT+01:00) France Time Europe/Berlin (GMT+01:00) Germany Time Europe/Brussels (GMT+01:00) Belgium Time Europe/Rome (GMT+01:00) Italy Time Europe/Vienna (GMT+01:00) Austria Time Africa/Cairo (GMT+02:00) Egypt Time Africa/Johannesburg (GMT+02:00) South Africa Time Europe/Athens (GMT+02:00) Greece Time Africa/Addis_Ababa (GMT+03:00) Ethiopia Time Asia/Dubai (GMT+04:00) United Arab Emirates Time Asia/Karachi (GMT+05:00) Pakistan Time Asia/Calcutta (GMT+05:30) India Time Asia/Dhaka (GMT+06:00) Bangladesh Time Asia/Saigon (GMT+07:00) Vietnam Time Asia/Hong_Kong (GMT+08:00) Hong Kong SAR China Time Asia/Tokyo (GMT+09:00) Japan Time Australia/Darwin (GMT+09:30) Australia Time (Darwin) Australia/Sydney (GMT+10:00) Australia Time (Sydney) Pacific/Guadalcanal (GMT+11:00) Solomon Islands Time America/Argentina/San_Juan (GMT-03:00) Argentina Time (San Juan) America/Buenos_Aires (GMT-03:00) Argentina Time (Buenos Aires) America/Sao_Paulo (GMT-03:00) Brazil Time (Sao Paulo) America/St_Johns (GMT-03:30) Canada Time (St. John’s) America/Puerto_Rico (GMT-04:00) Puerto Rico Time America/New_York (GMT-05:00) United States Time (New York) America/Toronto (GMT-05:00) Canada Time (Toronto) America/Jamaica (GMT-05:00) Jamaica Time America/Chicago (GMT-06:00) United States Time (Chicago) America/Mexico_City (GMT-06:00) Mexico Time (Mexico City) America/Cambridge_Bay (GMT-07:00) Canada Time (Cambridge Bay) America/Edmonton (GMT-07:00) Canada Time (Edmonton) America/Yellowknife (GMT-07:00) Canada Time (Yellowknife) America/Denver (GMT-07:00) United States Time (Denver) America/Chihuahua (GMT-07:00) Mexico Time (Chihuahua) America/Los_Angeles (GMT-08:00) United States Time (Los Angeles) America/Tijuana (GMT-08:00) Mexico Time (Tijuana) America/Vancouver (GMT-08:00) Canada Time (Vancouver) America/Anchorage (GMT-09:00) United States Time (Anchorage) Pacific/Honolulu (GMT-10:00) United States Time (Honolulu) Pacific/Tahiti (GMT-10:00) French Polynesia Time (Tahiti) Pacific/Midway (GMT-11:00) U.S. Minor Outlying Islands Time (Midway) Pacific/Niue (GMT-11:00) Niue Time GMT(+|-)HH:MM の書式を使用して、カスタマイズしたタイム・ゾーン識別子を使用することもできます。例えば、GMT-06:30 または GMT+02:00 などです。 _week_of_year ( <日付> ) <日付> の年始からの週数を ISO 8601 標準に準拠した形式で返します。第 1 週とは、その年の最初の木曜日が含まれる週、または 1 月 4 日が含まれる週を指します。週の初日は月曜日 (1 日目)、最終日は日曜日 (7 日目) です。 例: _week_of_year ( 2003-01-01 ) 結果: 1 _years_between ( <日付 1>, <日付 2> ) <日付 1> と <日付 2> の間の年数を、正または負の整数で返します。"<日付 1>" が "<日付 2>" よりも前の日付である場合、結果は負の値になります。 例: _years_between ( 2003-01-30 , 2001-04-03 ) 結果: 1 例: _years_between ( 2001-04-03 , 2003-01-30 ) 結果: -1 _ymdint_between ( <日付 1> , <日付 2> ) <日付 1> と <日付 2> の差を表す数値を返します。この戻り値の書式は YYYYMMDD です。YYYY は年数、MM は月数、DD は日数を表します。 例: _ymdint_between ( 1990-04-30 , 2003-02-05 ) 結果: 120905 が返されます。12 年 9 カ月 5 日を意味します。 _year ( date_expression ) "date_expression" の year フィールドの値を返します。 例: _year ( 2003-03-01 ) 結果: 2003 _month ( date_expression ) "date_expression" の month フィールドの値を返します。 例: _month ( 2003-03-01 ) 結果: 3 _day ( date_expression ) "date_expression" の day フィールドの値を返します。 例: _day ( 2003-03-01 ) 結果: 1 _hour ( date_expression ) "date_expression" の hour フィールドの値を返します。 例: _hour ( 2002-01-31 12:10:10.254 ) 結果: 12 _minute ( date_expression ) "date_expression" の minute フィールドの値を返します。 例: _minute ( 2002-01-31 12:10:10.254 ) 結果: 10 _second ( date_expression ) "date_expression" の second フィールドの値を返します。 例: _second ( 2002-01-31 12:10:10.254 ) 結果: 10.254 _timezone_hour ( timestamp_with_time_zone_value ) _timezone_hour ( time_with_time_zone_value ) 式の timezone hour フィールドの値を返します。式のタイプは「タイム・ゾーンを含むタイム・スタンプ」か「タイム・ゾーンを含む時刻」でなければなりません。 例: _timezone_hour ( 2002-01-31 12:10:10.254-05:30 ) 結果: -5 _timezone_minute ( timestamp_with_time_zone_value ) _timezone_minute ( time_with_time_zone_value ) 式の timezone minute フィールドの値を返します。式のタイプは「タイム・ゾーンを含むタイム・スタンプ」か「タイム・ゾーンを含む時刻」でなければなりません。 例: _timezone_minute ( 2002-01-31 12:10:10.254-05:30 ) 結果: -30 _start_of_day ([ date_expression ]) date_expression の始まりまたは今日の始まりをタイム・スタンプで返します 例: _start_of_day ( 2014-11-23 12:10:10.254 ) 結果: 2014-11-23 00:00:00 例: _start_of_day () 結果: 2016-01-01 00:00:00 _end_of_day ([ date_expression ]) date_expression の終わりまたは今日の終わりをタイム・スタンプで返します。 例: _end_of_day ( 2014-11-23 12:10:10.254 ) 結果: 2014-11-23 23:59:59 例: _end_of_day () 結果: 2016-01-01 23:59:59 _unix_timestamp ( date_expression ) 指定の "date_expression" について、1970-01-01 00:00:00-00 からの秒数を返します。 例: _unix_timestamp ( 2014-11-23 ) 結果: 1416718800 _from_unixtime ( integer_expression ) "integer_expression" で指定された UNIX 時間をタイム・ゾーン付きのタイム・スタンプで返します。 例: _from_unixtime (1417807335) 結果: 2014-12-05 19:22:15+00:00
マクロ関数 このリストには、マクロで使用できる関数が含まれています。マクロには、1 つ以上のマクロ関数を含めることができます。マクロの先頭と末尾には # マークがついています。# マークに囲まれている部分はマクロ式として扱われ、実行時に処理されます。タイムゾーン付きの timestamp データ型の式が使用可能なマクロ関数の場合は、'yyyy-mm-dd hh:mm:ss[.ff]+hh:mm' の書式を使用します。秒の端数は省略可能で、1~9 桁で表せます。日時の部分を区切る文字として、空白の代わりに 'T' を使用することもできます。また、タイムゾーンの '+hh:mm' の代わりに、文字 'Z' を指定することもできます。この場合、内部的には '+00:00' として処理されます。タイムゾーン付きの timestamp データ型の式を返すマクロ関数は、秒の端数としてデフォルトで 9 桁を返します。この出力は、timestampMask() マクロ関数で短くできます。 「整数」で示す秒数を「文字列」に加算した結果を、タイム・ゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイム・ゾーン付きのタイム・スタンプを表しています。 _add_seconds ( <文字列> , <整数> ) 例: # _add_seconds ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2005-11-01 11:59:59.000-05:00 例: # _add_seconds ( $current_timestamp , 1 ) # 結果: 2005-11-01 12:00:01.000000000-05:00 例: # timestampMask ( _add_seconds ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 結果: 12:00:01 「整数」で示す分数を「文字列」に加算した結果を、タイム・ゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイム・ゾーン付きのタイム・スタンプを表しています。 _add_minutes ( <文字列> , <整数> ) 例: # _add_minutes ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2005-11-01 11:59:00.000-05:00 例: # _add_minutes ( $current_timestamp , 1 ) # 結果: 2005-11-01 12:01:00.000000000-05:00 例: # timestampMask ( _add_minutes ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 結果: 12:01:00 「整数」で示す時間数を「文字列」に加算した結果を、タイム・ゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイム・ゾーン付きのタイム・スタンプを表しています。 _add_hours ( <文字列> , <整数> ) 例: # _add_hours ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2005-11-01 13:00:00.000-05:00 例: # _add_hours ( $current_timestamp , 1 ) # 結果: 2005-11-01 13:00:00.000000000-05:00 例: # timestampMask ( _add_hours ( $current_timestamp , 1 ) , 'hh:mm:ss' ) # 結果: 13:00:00 「整数」で示す日数を「文字列」に加算した結果を、タイムゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイムゾーン付きのタイム・スタンプを表しています。第 1 引数が yyyy-mm-dd 形式の文字列として指定された日付である場合、戻り値は日付としてフォーマットされた文字列になります。 _add_days ( <文字列> , <整数> ) 例: # _add_days ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2005-10-31 12:00:00.000000000-05:00 例: # _add_days ( $current_timestamp , 1 ) # 結果: 2005-11-02 12:00:00.000000000-05:00 例: # timestampMask ( _add_days ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 結果: 2005-11-02 例: # _add_days( '2019-11-14' , 3 ) # 結果: 2019-11-17 「整数」で示す月数を「文字列」に加算した結果を、タイムゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイムゾーン付きのタイム・スタンプを表しています。第 1 引数が yyyy-mm-dd 形式の文字列として指定された日付である場合、戻り値は日付としてフォーマットされた文字列になります。 _add_months ( <文字列> , <整数> ) 例: # _add_months ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2005-10-01 12:00:00.000000000-05:00 例: # _add_months ( $current_timestamp , 1 ) # 結果: 2005-12-01 12:00:00.000000000-05:00 例: # timestampMask ( _add_months ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 結果: 2005-12-01 例: # _add_months( '2019-11-14' , -1 ) # 結果: 2019-10-14 <整数> で示す年数を <文字列> に加算した結果を、タイム・ゾーン付きのタイム・スタンプの文字列として返します。この <文字列> はタイム・ゾーン付きのタイム・スタンプを表しています。第 1 引数が yyyy-mm-dd 形式の文字列として指定された日付である場合、戻り値は日付としてフォーマットされた文字列になります。 _add_years ( <文字列> , <整数> ) 例: # _add_years ( '2005-11-01 12:00:00.000-05:00' , -1 ) # 結果: 2004-11-01 12:00:00.000000000-05:00 例: # _add_years ( $current_timestamp , 1 ) # 結果: 2006-11-01 12:00:00.000000000-05:00 例: # timestampMask ( _add_years ( $current_timestamp , 1 ) , 'yyyy-mm-dd' ) # 結果: 2006-11-01 例: # _add_years( '2019-11-14' , -2 ) # 結果: 2017-11-14 _first_of_month ( <文字列> ) 「文字列」の日付を 1 に変換して、タイムゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイムゾーン付きのタイム・スタンプを表しています。 例: # _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) # 結果: 2005-11-01 12:00:00.000000000-05:00 例: # timestampMask ( _first_of_month ( '2005-11-11 12:00:00.000-05:00' ) , 'yyyymmdd' ) # 結果: 20051101 _last_of_month ( <文字列> ) 「文字列」で表された月の最後の日を、タイムゾーン付きのタイム・スタンプの文字列として返します。この「文字列」はタイムゾーン付きのタイム・スタンプを表しています。 例: # _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) # 結果: 2005-11-30 12:00:00.000000000-05:00 例: # timestampMask ( _last_of_month ( '2005-11-11 12:00:00.000-05:00' ) , 'yyyy-mm-dd' ) # 結果: 2005-11-30 modelj ( 'identifier' [ , 'model_search_path' [ , 'options' ] ] ) json 形式のメタデータ・モデルの一部分を返します。'model_search_path' が指定されていない場合には、現行モデルが使用されます。 'options' 引数は 'cleanup' に設定することができ、それによって結果のいくつかの部分が固定値に変更されます (テストに役立ちます)。 sq ( modelj ( '[gosales].[country].[country]' ) 「文字列」を角括弧で囲みます。 sb ( <文字列> ) 例: # sb ( 'abc' ) # 結果:[abc] 「文字列」を一重引用符で囲みます。 sq ( <文字列> ) 例: # sq ( 'zero' ) # 結果:'zero' 「文字列」を二重引用符で囲みます。 dq ( <文字列> ) 例: # dq ( 'zero' ) # 結果:"zero" 指定したパラメーター・マップ内の値を、現在の認証済みユーザーの ID 情報を使用して検索します。アカウント名、グループ名、役割名などのユーザー ID の個々の値がマップに対するキーとして使用されます。パラメーター・マップから取得される一意の値のリストが文字列として返されます。各値は一重引用符で囲まれ値が複数ある場合はコンマで区切られます。 CSVIdentityName ( %parameter_map_name [ , <区切り文字列> ] ) 例: # CSVIdentityName ( %security_clearance_level_map ) # 結果:'level_500' , 'level_501' , 'level_700' アカウント名、グループ名、役割名などのユーザー情報の値が一連の文字列として返されます。この一意の値のリストは、各値が一重引用符で囲まれた文字列として返されます。値が複数ある場合はコンマで区切られます。 CSVIdentityNameList ( [ <区切り文字列> ] ) 例: # CSVIdentityNameList ( ) # 結果:'すべてのユーザー' , 'レポート管理者' , 'クエリー・ユーザー' Cognos® Access Manager passport を返します。 CAMPassport ( ) 例: # CAMPassport ( ) # 結果:111:98812d62-4fd4-037b-4354-26414cf7ebef:3677162321 アカウント名、グループ名、役割名などのユーザーの Cognos® Access Manager ID (CAMID) を、コンマで区切られた値のリストとして返します。 CAMIDList ( [ <区切り文字列> ] ) 例: #CAMIDList ( ) # 結果: CAMID ( ":: すべてのユーザー" ) , CAMID ( ": 作成者" ) , CAMID ( ": クエリー・ユーザー" ) , CAMID ( ": 使用者" ) , CAMID ( ": 評価指標作成者" ) ID タイプ (アカウント、グループ、または役割) に基づいて、ユーザーの Cognos® Access Manager ID (CAMID) の配列を返します。CAMIDListForType はマクロ関数 csv や join とともに使用できます。 CAMIDListForType ( <ID タイプ> ) 例: [qs].[userRole] in ( # csv ( CAMIDListForType ( 'role' ) ) # ) 結果: [qs].[userRole] in ( 'CAMID ( ":: システム管理者" ) ' , 'CAMID ( ": 作成者" )' ) 2 つの文字列を連結します。 <値 1> + <値 2> 例: # '{ ' + $<実行ロケール> + ' }' # 結果: {en-us} 先行文字を最初の引数から削除します。オプションの 2 番目の引数は削除する文字のセットを定義します。デフォルトでこの関数は空白文字 (すなわち、スペース、タブ、復帰、および改行) を削除します。 lstrip ( <文字列> [ , <文字のセット> ] ) 例: # sq( lstrip ( ' abc ' ) ) # 結果: 'abc ' 例: # lstrip ( ' 0053.2100 ' , '0 \t\r\n' ) # 結果: 53.2100 「parameterName」のパラメーター値が定義されている場合にその値を返します。「parameterName」がない場合は「defaultText」の値を返します。「datatype」を「string」に設定すると、結果値が一重引用符で囲まれます。この関数を使用しても、パラメーター欠落の例外は発生しません。 ParamValue ( parameterName [ , defaultText [, datatype ] ] ) 例: # ParamValue ( 'p_country' ) # 結果: 'Canada' - p_country は設定されています 結果: null - p_country は不明なパラメーターです 結果: null - p_country はオプション・プロンプトで使用されましたが、設定されていません 例: # ParamValue ( 'p_country' , 'Netherlands' ) # 結果: 'Canada' - p_country は設定されています 結果: 'Netherlands' - p_country は不明なパラメーターです 結果: 'Netherlands' - p_country はオプション・プロンプトで使用されましたが、設定されていません 例: # ParamValue ( 'p_country', ' cast ( null as varchar(20)) ' , 'token' ) # 結果: 'Canada' - p_country は設定されています 結果: cast ( null as varchar(20)) - p_country は不明なパラメーターです 結果: cast ( null as varchar(20)) - p_country はオプション・プロンプトで使用されましたが、設定されていません ユーザーに単一の値またはメンバーをプロンプトします。<プロンプト名> のみ必須です。データ型の指定がない場合、デフォルトでは文字列型になります。<デフォルトの文字列> が指定されている場合は、プロンプトはオプションになります。<テキスト> を指定する場合は、値の前に置きます。<クエリー・アイテム> を指定すると、<クエリー・アイテム> のプロンプト情報プロパティーを活用することができます。「末尾のテキスト」を指定すると、テキストが値の後ろに付け加えられます。データ型が「memberuniquename」である場合、単一のメンバー選択プロンプトが作成されます。3 番目の引数としてデフォルト値を指定することをお勧めします。デフォルト値は有効なメンバー内で一意な名前でなければなりません。また、Report Authoring の場合と同様に、メンバー内で一意な名前を参照する別名を指定することもできます。 prompt ( <プロンプト名> , <データ型> , <デフォルトの文字列> , <テキスト> , <クエリー・アイテム> , <末尾のテキスト> ) 例: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > #prompt ( '最初の国コード' , 'integer' , '10' ) # 結果: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE > 10 例: [GO 販売].[国].[国] = # prompt ( 'countryPrompt' , 'string' , '''カナダ''' ) # 結果:[GO 販売].[国].[国] = 'カナダ' 例: set ( #prompt ('myProduct', 'memberuniquename', '[キャンプ用品]', '', '[販売].[製品].[製品].[製品ライン]')#) 結果: set([販売].[製品].[製品].[製品ライン]->[all].[1]) <デフォルトの文字列> パラメーターは、マクロのコンテキストでそのまま有効になるように指定する必要があります。この値に対しては、書式設定が実行されないためです。例 2 のデフォルト文字列 '''カナダ''' は、一重引用符を使用して文字列として指定されています。ここでは、埋め込み用の一重引用符が 2 重に指定されているため、引用符が 3 つになっています。その結果、式の中で文字列が一重引用符の中に正しく表示されるようになります。一般的に、データ型が文字列型の場合、ストアード・プロシージャー・パラメーターのコンテキスト以外では、必ず <デフォルトの文字列> をこのように指定する必要があります。<デフォルトの文字列> が 'date' 型や 'datetime' 型の場合、SQL のコンテキストでは特別な書式を使用する必要があります。例えば、'DATE ''2001-12-25''' や 'DATETIME ''2001-12-25 12:00:00''' のようになります。それ以外のコンテキストではすべて、キーワードもエスケープされた一重引用符もない日付や日時 ('2001-12-25' など) を使用します。 ユーザーに 1 つ以上の値またはメンバーをプロンプトします。<プロンプト名> のみ必須です。データ型の指定がない場合、デフォルトでは文字列型になります。<デフォルトの文字列> が指定されている場合は、プロンプトはオプションになります。<テキスト> を指定する場合は、値のリストの前に置きます。<クエリー・アイテム> を指定すると、<クエリー・アイテム> のプロンプト情報プロパティーを活用することができます。「末尾のテキスト」を指定すると、テキストが値リストの後ろに付け加えられます。データ型が「memberuniquename」である場合、複数のメンバー選択プロンプトが作成されます。3 番目の引数としてデフォルト値を指定することをお勧めします。デフォルト値は有効なメンバー内で一意な名前でなければなりません。また、Report Authoring の場合と同様に、メンバー内で一意な名前を参照する別名を指定することもできます。 promptmany ( <プロンプト名> , <データ型> , <デフォルトの文字列> , <テキスト> , <クエリー・アイテム> , <末尾のテキスト> ) 例: select . . . where COUNTRY_MULTILINGUAL.COUNTRY in ( # promptmany ( '国名' ) # ) 結果: select . . . where COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'カナダ' , 'オランダ' , 'ロシア' ) 例: select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL , gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE # promptmany ( 'Selected CountryCodes' , 'integer' , ' ' , ' and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( ' , '' , ' ) ' ) # 結果: select . . . from gosales.gosales.dbo.COUNTRY_MULTILINGUAL COUNTRY_MULTILINGUAL , gosales.gosales.dbo.COUNTRY XX where COUNTRY_MULTILINGUAL.COUNTRY_CODE = XX.COUNTRY_CODE and COUNTRY_MULTILINGUAL.COUNTRY_CODE in ( 'カナダ' , 'オランダ' , 'ロシア' ) 例: set ( #promptmany ('myProduct', 'memberuniquename', '[キャンプ用品]', '', '[販売].[製品].[製品].[製品ライン]')#) 結果: set([販売].[製品].[製品].[製品ライン]->[all].[1]; [販売].[製品].[製品].[製品ライン]->[all].[2]) 単一列に対するクエリーを実行し、1 行目の値 (のみ) を返します。結果の形式は設定されないので、必要に応じて呼び出しを sq ( ) で囲んでください。 queryValue ( value_expression [ , filter_expression ] ) 例: # sq ( queryValue ( 'TheCalendar.TheWeekdayName' , 'TheCalendar.TheDate = 2018-06-06' ) ) # 結果: '水曜日' パラメーターのリストから配列を構成します。 array ( <文字列>|<配列> { , <文字列>|<配列> } ) 例: # csv ( array ( 'a1' , array ( 'x1' , 'x2' ) , 'a2' ) ) # 結果:'a1' , 'x1' , 'x2' , 'a2' となります。 配列の要素から、値をカンマで区切った文字列を構成します。区切り文字列と引用文字列は任意で指定できます。デフォルトの区切り文字はカンマ ( , )、引用文字は一重引用符 ( ' ) です。 csv ( <配列> [ , <区切り文字列> [ , <引用文字列> ] ] ) 例: # sq ( csv ( array ( 'a1' , 'a2' ) ) ) # 結果:'a1' , 'a2' IBM® Cognos® の設定ファイルからエントリーを取得します。<デコード強制フラグ> はオプションであり、次のいずれかでなければなりません: 'true'、'1'、1、'false'、'0'、0。デフォルトは 'false' です。例外の場合には、<デコード強制フラグ> は true に設定されます。 <デコード強制フラグ> が true に設定されると、詳細プロパティーによって IBM® Cognos® の設定で設定されたエントリーについては、設定エントリーのプレーン・テキスト形式の値が返されます。 詳細プロパティーで識別されないエントリーについては、暗号化情報の有無に関係なく空の文字列が返されます。 詳細プロパティーのエントリーは qs.getConfigurationEntry.1 であり、セミコロンで区切られた名前のリストです。デフォルトでは、この名前のリストは空で、フラグが true に設定されたこの関数を呼び出し、空の文字列が返されます。 getConfigurationEntry ( <入力文字列> , <デコード強制フラグ> ) 例: # getConfigurationEntry ( 'serverLocale'  ) # 結果:en リソース・ファイルからエントリーを返します。 1 つ目の引数は、リソース・ファイルで検出されたリソース ID です。オプションの 2 つ目の引数は、ロケール・サフィックスを除いたリソース・ファイル名 (例えば、メッセージ・ファイル 'mfwa4j_en.properties' の場合は 'mfwa4j') です。デフォルトのリソース・ファイルは 'xqejavamsgs' です。オプションの 3 つ目の引数はロケール (デフォルトは 'en') です。 getResourceString ( リソース ID 文字列 [, リソース・ファイル文字列 [ , ロケール文字列 ] ] ) 例: # getResourceString ( 'XQE_BIN_binLow' ) # 結果: XQE-BIN-0001 %1 より小さい 例: # getResourceString ( 'MFW_UT_INTERNAL_ERROR' , 'mfw4j' , 'en' ) # 結果: MFW-UT-1002 内部の問題が発生しました。システム管理者に連絡してください。 「パターン文字列」で指定されたパターンに一致する、配列の要素を検索して返します。 サポートされるメタキャラクターは、 ^ (単語の開始)、 $ (単語の終了)、 ! (否定 - 先頭文字に限りサポート) のみです。 grep ( <パターン文字列> , <配列> ) 例: # sq ( csv ( grep ( 's' , array ( 'as', 'an', 'arts' ) ) ) ) # 結果:'as', 'arts' 例: # sq ( csv ( grep ( '^g' , array ( 'group', 'golf' ) ) ) ) # 結果: 'group'、'golf' 例: # sq ( csv ( grep ( 's$' , array ( 'oranges', 'mangoes' ) ) ) ) # 結果: 'oranges'、'mangoes' 例: # sq ( csv ( grep ( '!o' , array ( 'oranges', 'apples' ) ) ) ) # 結果: 'apples' '部分文字列' が見つかった '文字列' 内のオフセットを検出します。'部分文字列' が見つからない場合は値 -1 が返されます。オプションで、検索を開始する位置として 'オフセット' を指定することもできます。最初の引数 '文字列' を配列式にすることもできます。この場合、関数は各配列要素に適用され、関数の結果は値の配列になります。 index ( 文字列 , 部分文字列 [ , オフセット ] ) # index ( 'The black horse jumped over the black sheep.', 'black' ) # 結果: 4 # index ( 'The black horse jumped over the black sheep.', 'black', 10 ) # 結果: 32 # index ( 'The black horse jumped over the black sheep.', 'green' ) # 結果: -1 # sq ( join ( ' | ', index ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # 結果: -1 | 1 | 2 「区切り文字列」を使って配列の要素を結合します。 join ( <区切り文字列> , <配列> ) 例: # sq ( join ( ' | | ' , array ( 'as', 'an', 'arts' ) ) ) # 結果:'as | | an | | arts' 文字列式の文字数を計算します。引数が配列式である場合、結果は値の配列になります。各項目は配列式の各要素の文字数になります。 length ( 文字列式 | 配列式 ) length ( 'abcdef' ) 結果: 6 join ( '--', length ( array ( 'abcdef' , 'xyz' ) ) ) 結果: 6--3 '部分文字列' が見つかった '文字列' 内の最後のオフセットを検出します。この関数は逆索引と呼ばれ、文字列の末尾からスキャンが開始した場合のように表示されます。'部分文字列' が見つからない場合は値 -1 が返されます。オプションで、検索を終了する位置として 'オフセット' を指定することもできます。最初の引数 '文字列' を配列式にすることができます。この場合、関数は各配列要素に適用され、関数の結果は値の配列になります。 rindex ( 文字列 , 部分文字列 [ , オフセット ] ) # rindex ( 'The black horse jumped over the black sheep.', 'black' ) # 結果: 32 # rindex ( 'The black horse jumped over the black sheep.', 'black', 10 ) # 結果: 4 # rindex ( 'The black horse jumped over the black sheep.', 'green' ) # 結果: -1 # sq ( join ( ' | ', rindex ( array ('black' , 'red', 'green' ) , 'e' ) ) ) # 結果: -1 |1 | 3 末尾の文字を最初の引数から削除します。オプションの 2 番目の引数は削除する文字のセットを定義します。デフォルトでこの関数は空白文字 (すなわち、スペース、タブ、復帰、および改行) を削除します。 rstrip ( <文字列> [ , <文字のセット> ] ) 例 # sq( rstrip ( ' abc ' ) ) # 結果: ' abc' 例: # rstrip ( ' 0053.2100 ' , '0 \t\r\n' ) # 結果: 0053.21 配列の要素をアルファベット順にソートします。重複する値は保持されます。 sort ( <配列> ) 例: # csv ( sort ( array ( 's3', 'a', 'x' ) ) ) # 結果:'a', 's3', 'x' 配列の文字列あるいは文字列要素を個別の要素に分割します。 split ( <パターン文字列>, <文字列>|<配列> ) 例: # sq ( csv ( split ( '::', 'ab=c::de=f::gh=i' ) ) ) # 結果:'ab=c' , 'de=f', 'gh=i' 例: # sq ( csv ( split ( '=' , split ( '::', 'ab=c::de=f::gh=i' ) ) ) ) # 結果:'ab', 'c', 'de', 'f', 'gh', 'i' 先行文字と末尾の文字を最初の引数から削除します。オプションの 2 番目の引数は削除する文字のセットを定義します。デフォルトでこの関数は空白文字 (すなわち、スペース、タブ、復帰、および改行) を削除します。 strip ( <文字列> [ , <文字のセット> ] ) 例: # sq( strip ( ' abc ' ) ) # 結果: 'abc' 例: # strip ( ' 0053.2100 ' , '0 \t\r\n' ) # 結果: 53.21 配列の文字列または文字列要素でパターンを検索し、最初に出現した「パターン文字列」を「置換文字列」に置き換えます。 サポートされるメタキャラクターは、 ^ (単語の開始)、 $ (単語の終了) のみです substitute ( <パターン文字列>, <置換文字列>, <文字列>|<配列> ) 例: #sq ( substitute ( '^cn=', '***', 'cn=help' ) )# 結果:'***help' 例: # csv ( substitute ( '^cn=', '***', array ( 'cn=help' , 'acn=5' ) ) ) # 結果:'***help', 'acn=5' 例: # csv ( substitute ( 'cn=', '', array ( 'cn=help' , 'acn=5' ) ) ) # 結果:'help' , 'a5' 例: #sq ( substitute ( 'help$', '***', 'cn=help' ) )# 結果: 'cn=***' '文字列式' から '開始オフセット' 以降の部分を抽出します。抽出する文字の '長さ' の数値を指定できます。'長さ' を指定しないと、'文字列式' の末尾まで返されます。最初の引数を配列式にすることもできます。この場合、関数は各配列要素に適用され、関数の結果は文字列の配列になります。 substr ( 文字列式 , 開始オフセット [ , 長さ ] ) substr ( 'The horse is black.', 0, 3 ) 結果: The substr ( 'The horse is black.', 4 ) 結果: horse is black。 substr ( 'The horse is black', index ('The horse is black.' , 'green' ) ) 結果: The horse is black。 join ( ' | ', substr ( array ('black' , 'red', 'green' ) , 2, 2 ) ) 結果: ac | d | en substr ('over the moon', -2, 4) エラーになります: 関数 'substr' の 2 つ目の引数は -1 以上でなければなりません。 タイム・ゾーン付きのタイム・スタンプを表す <文字列 1> を返します。その際、<文字列 2> で指定された書式に短縮されます。<文字列 2> の書式には、'yyyy'、'mm'、'dd'、'yyyy-mm'、'yyyymm'、'yyyy-mm-dd'、'yyyymmdd'、'yyyy-mm-dd hh:mm:ss'、'yyyy-mm-dd hh:mm:ss+hh:mm'、'yyyy-mm-dd hh:mm:ss.ff3'、'yyyy-mm-dd hh:mm:ss.ff3+hh:mm'、'yyyy-mm-ddThh:mm:ss'、'yyyy-mm-ddThh:mm:ss+hh:mm'、'yyyy-mm-ddThh:mm:ss.ff3+hh:mm'、'yyyy-mm-ddThh:mm:ss.ff3+hh:mm' のいずれかを指定する必要があります。タイムゾーン付きのタイム・スタンプを表す文字列を返すマクロ関数の場合、デフォルトでは秒の端数の部分が 9 桁の精度で表示されます。書式オプションでは、この精度を 3 桁または 0 桁に下げることができます。 timestampMask ( <文字列 1> , <文字列 2> ) 例: # timestampMask ( $current_timestamp , 'yyyy-dd-mm' ) # 結果: 2005-11-01 例: # timestampMask (  '2005-11-01 12:00:00.000-05:00' , 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # 結果:2005-11-01 12:00:00-05:00 となります。 例: # timestampMask (  '2005-11-01 12:00:00.123456789-05:00' , 'yyyy-mm-ddThh:mm:ss+hh:mm.ff3+hh:mm' ) # 結果:2005-11-01T12:00:00.123-05:00 となります。 <文字列> をオペレーティング・システムのタイム・ゾーンに調整し、タイム・ゾーン付きタイム・スタンプを表す文字列として返します。この出力は、timestampMask() マクロ関数で短くできます。 toLocal ( <文字列> ) 例: # toLocal ( '2005-11-01 17:00:00.000-00:00' ) # (OS のローカル・タイム・ゾーンが -05:00 だとする) 結果: 2005-11-01 12:00:00.000000000-05:00 例: # timestampMask ( toLocal ( '2005-11-01 17:00:00.000-00:00' ) , 'yyyy-mm-dd hh:mm:ss+hh:mm' ) # (OS のローカル・タイム・ゾーンが -05:00 だとする) 結果:2005-11-01 12:00:00-05:00 となります。 例: # toLocal ( '2005-11-01 13:30:00.000-03:30' ) # (OS のローカル・タイム・ゾーンが -05:00 だとする) 結果: 2005-11-01 12:00:00.000000000-05:00 ロケール「<ロケール文字列>」の規則を使用してすべての文字を小文字に変換した文字列「< 文字列 >」を返します。ロケールが指定されていない場合、ロケール「en」が使用されます。 tolower ( <文字列> [ , <ロケール文字列> ] ) 例: # tolower ( 'ABC' ) # 結果: abc 例: # tolower ( 'ABC' , 'fr' ) # 結果: abc 「<ロケール文字列>」で定義されたロケールの規則を使用してすべての文字を大文字に変換した文字列「< 文字列 >」を返します。「<ロケール文字列>」が指定されていない場合、ロケール「en」が使用されます。 toupper ( <文字列> [ , <ロケール文字列> ] ) 例: # toupper ( 'abc' ) # 結果: ABC 例: # toupper ( 'abc' , 'fr' ) # 結果: ABC <文字列> を基準時刻である UTC (GMT とも呼ばれる) に調整し、タイム・ゾーン付きタイム・スタンプを表す文字列として返します。この出力は、timestampMask() マクロ関数で短くできます。 toUTC ( <文字列> ) 例: # toUTC ( '2005-11-01 12:00:00.000-05:00' ) # 結果: 2005-11-01 17:00:00.000000000-00:00 例: # timestampMask( toUTC ( '2005-11-01 12:00:00.000-05:00' ) , 'yyyy-mm-dd hh:mm:ss.ff3+hh:mm' ) # 結果: 2005-11-01 17:00:00.000-00:00 例: # toUTC ( $current_timestamp ) # 結果: 2005-11-01 17:00:00.000000000-00:00 配列から重複しているエントリーを削除します。要素の順番は保持されます。 unique ( <配列> ) # csv ( unique ( array ( 's3', 'a', 's3', 'x' ) ) ) # 結果:'s3', 'a', 'x' URL では渡された引数がエンコードされます。この関数は、XML の接続文字列を指定する場合に便利です。 urlencode ( prompt ( '<ユーザー値>' ) ) urlencode ( prompt ( '値' ) ) %27<テスト値>%27 単純な case このマクロ構成体は、case、when、then、else、end 関数を含む、単純な case のテンプレートです。このマクロ構成体は DQM モードでのみサポートされていることに注意してください。 CASE <式> WHEN <リテラル> THEN <式> [ELSE <式>] END 例: #CASE prompt('pDateRange','token') WHEN '現在の週' THEN '[PR 現在の週]' ELSE '[PR 前の週]' END# 結果: [PR 現在の週]
ブロック関数 このリストには、通常 Analysis Studio のコンテキストでセットのメンバーへのアクセスに使用される関数が含まれています。 セットで最初に見つかったメンバーから数えて <最大値> と <オーバーフロー値> の合計数のところまで、見つかったメンバーを返します。<最大値> と <オーバーフロー値> の合計を超過している場合は、最大数のメンバーのみが返されます。メンバーの数が、指定した <最大値> を少しだけ超過するセットの場合、<オーバーフロー値> に基づき、超過した少量のメンバーのセットが含められます。セットに含まれるメンバーの数がオーバーフローで許可される数を超過している場合は、「最大値」のメンバーのみが返されます。 _firstFromSet ( <セット> , <最大値> , <オーバーフロー値> ) _firstFromSet ( [great_outdoors_company].[製品].[製品].[製品ライン] , 2 , 8 ) 結果:"製品ライン"セットの 5 つのメンバーを返します。最初の 2 つのメンバーは最大値内で返され、その次の 3 つのメンバーはオーバーフローとして返されます。 キャンプ用品 ゴルフ用品 登山用品 アウトドア用保護用品 個人装備 _firstFromSet ( [great_outdoors_company].[製品].[製品].[製品ライン] , 2 , 2 ) 結果: キャンプ用品、ゴルフ用品 「セット」のサイズが「数値」より大きい場、「メンバー」を含むセットが返されます。つまり、「セット」内のメンバーの数が、指定した「数値」よりも大きい場合に新しいメンバーが生成されます。 _remainderSet ( <メンバー>, <セット> , <数値> ) _remainderSet ( member ( aggregate ( currentMeasure within set [great_outdoors_company].[製品].[製品].[製品ライン] ) , '製品集計' , '製品集計' , [great_outdoors_company].[製品].[製品] ) , [great_outdoors_company].[製品].[製品].[製品ライン] , 1 ) 結果: 製品集計の販売数量