MDX問合せの実行
/essbase/rest/v1/applications/{application}/databases/{database}/mdx
MDX問合せを実行し、選択したフォーマット(JSON、HTML、ExcelまたはCSV)で結果を返します。
結果は、リクエストされた形式(デフォルトはJSON)のMDX出力セットです。出力セットには、メタデータ(ページ、列および行のタプルを含む)の後にデータ(行ごとに1つのタプル)が含まれます。
リクエスト
- application(required): string
アプリケーション名。
- database(required): string
データベース名。
- format: string
結果フォーマット。
デフォルト値:JSON
指定可能な値:[ "XLSX", "CSV", "HTML", "JSON" ]
MDX問合せおよびプリファレンス。これは、保存済MDXレポート(キューブ・コンテキストに保存された名前付き問合せ)を実行するのではなく、MDX問合せを文字列として直接実行する場合に使用します。
object
- cellAttributes: boolean
- dataless: boolean
出力セットからのデータ値を省略する場合は、trueに設定します。デフォルトはfalseです。
- formatString: boolean
タイプがテキストまたは日付のセル、またはフォーマット文字列に関連付けられたセルのフォーマットされた値を返す場合は、trueに設定します。デフォルトはtrueです。
- formatValues: boolean
- hideRestrictedData: boolean
- meaninglessCells: boolean
- memberIdentifierType: string
指定可能な値:
[ "NAME", "ALIAS", "UNIQUE_NAME" ]
出力のメタデータがメンバー名、メンバー別名または一意のメンバー名(重複メンバー対応のアウトラインの場合)のいずれを指すか指定します。
- textList: boolean
- urlDrillThrough: boolean
レスポンス
- application/octet-stream
- text/html
200 レスポンス
大部分はOK
これはストリーミングAPIであるため、ステータス200であっても失敗する可能性があります。レスポンスでerrorMessage
タグを確認してエラーを特定してください。
object
400 レスポンス
不正なリクエスト
必要なフォーマットでデータを取得できませんでした。
500 レスポンス
サーバーの内部エラーです。
例
次の例では、MDX問合せを文字列として実行する方法を示します。
cURLコマンドを含むスクリプト
この例では、cURLを使用して、Windowsシェル・スクリプトからREST APIにアクセスします。呼出し元ユーザーのIDおよびパスワードは変数であり、properties.bat
内でその変数値が設定されています。
call properties.bat
curl -X POST "https://myserver.example.com:9001/essbase/rest/v1/applications/Sample/databases/Basic/mdx?format=JSON" -H Accept:application/octet-stream -H Content-type:application/json --data-binary "@./input_mdx.json" -o output_mdx.json -u %User%:%Password%
入力JSONデータ
前述のスクリプトは、Sample Basicで、input_mdx.json
に格納されているMDX入力問合せを実行します。入力ファイルの内容は次のとおりです。
{
"query" : "SELECT {([Year].generations(2).members)} ON COLUMNS",
"preferences" : {
"dataless" : false,
"formatValues" : true,
"memberIdentifierType": "NAME"
}
}
この場合:
-
query
には、入力MDX文字列が含まれます。 -
preferences
には、出力セットに指定できるオプションが含まれます。次に例を示します。"dataless" : false
は、出力からのデータ値を省略しないことを意味します。"formatValues" : true
は、タイプがテキストまたは日付のセル、またはフォーマット文字列に関連付けられたセルのフォーマットされた値を返すことを意味します。デフォルトでは、この設定はオンになっています。"memberIdentifierType" : "NAME"
は、別名ではなくメンバー名が出力に含まれる必要があることを意味します。
レスポンス本体の例
成功した場合、APIはMDX出力セットをリクエストされた形式(デフォルトはJSON)で返します。
出力セットには、次のフォームが含まれます(JSONの例):
{
"metadata": {
"page": [<tuple>],
"column": [<tuple>],
"row": [<tuple>]
},
"data": [["",<data_row_tuples>],
]
}
出力には、キー/値ペアが含まれ、キーはメタデータおよびデータであり、値はa) 別のMDXセットおよびb) データ・タプルです。
表 - JSONレスポンス・セット
キー | 値の説明 |
---|---|
metadata | {メタデータ・セット} |
data | [データ・タプル[行タプル]] |
前述で使用したcURLの例のoutput_mdx.json
に、次の出力セットが書き込まれます。
{ "metadata" : {"page" : ["Measures","Product","Market","Scenario"],"column" : ["Year"],"row" : []},"data" : [["Qtr1","Qtr2","Qtr3","Qtr4"]] }
「次として実行」を使用する例
サービス管理者の場合、「次として実行」を使用すると、他のユーザーに偽装し、データ・アクセスを確認できます。これは、様々なユーザーに割り当てられたフィルタをテストする際に役立つことがあります。
これを実行するには、アプリケーションにプロビジョニングされるユーザー名を含むリクエスト・ヘッダーX-Essbase-LoginAs
を追加します。
たとえば、次のスクリプトは、user3の権限ビューポイントを使用して、MDXレポートの実行結果をファイルに書き込みます。
call properties.bat
curl -X POST "https://myserver.example.com:9001/essbase/rest/v1/applications/Sample/databases/Basic/mdx?format=JSON" -H "Content-Type:application/json" -H 'X-Essbase-LoginAs: user3' --data-binary "@./input_mdx.json" -o output2_mdx.json -u %User%:%Password%