MDX問合せの実行

post

/essbase/rest/v1/applications/{application}/databases/{database}/mdx

MDX問合せを実行し、選択したフォーマット(JSON、HTML、ExcelまたはCSV)で結果を返します。

結果は、リクエストされた形式(デフォルトはJSON)のMDX出力セットです。出力セットには、メタデータ(ページ、列および行のタプルを含む)の後にデータ(行ごとに1つのタプル)が含まれます。

リクエスト

パス・パラメータ
問合せパラメータ
  • 結果フォーマット。

    デフォルト値: JSON
    指定可能な値: [ "XLSX", "CSV", "HTML", "JSON" ]
本体()

MDX問合せおよびプリファレンス。これは、保存済MDXレポート(キューブ・コンテキストに保存された名前付き問合せ)を実行するのではなく、MDX問合せを文字列として直接実行する場合に使用します。

ルート・スキーマ : MDXInput
型: object
ソースの表示
ネストされたスキーマ : NamedQueriesPreferences
型: object
ソースの表示
  • memberIdentifierType: ALIASおよびaliasTableが有効な別名表名に設定されている場合、結果のmdxグリッドに指定された表のメンバー名が含まれています。このプロパティの値が設定されていない場合は、Default別名表から名前が選択されます。

  • trueに設定すると、実際のデータ値の他にメタデータ属性のセットが問合せ結果から返されます。

  • 出力セットからのデータ値を省略する場合は、trueに設定します。デフォルトはfalseです。

  • タイプがテキストまたは日付のセル、またはフォーマット文字列に関連付けられたセルのフォーマットされた値を返す場合は、trueに設定します。デフォルトはtrueです。

  • trueに設定すると、セルのフォーマットされた値が返されます。

  • trueに設定すると、出力の制限されたセル・データを非表示にします。

  • trueに設定すると、出力内の無意味なセル・データが抑制されます。たとえば、存在しないセルや構造的に無関係なセルなどです。

  • 指定可能な値: [ "NAME", "ALIAS", "UNIQUE_NAME" ]

    出力のメタデータがメンバー名、メンバー別名または一意のメンバー名(重複メンバー対応のアウトラインの場合)のいずれを指すか指定します。

  • trueに設定すると、出力のセルに関連付けられているすべてのテキスト値のカンマ区切りリストが返されます。

  • trueに設定すると、適用可能な各セルにURLが追加され、ユーザーがソース・データをクリックスルーできるようになります。これは、Essbaseドリル・スルー・リンクが構成されている場合にのみ機能します。

先頭に戻る

レスポンス

サポートされているメディア・タイプ

200 レスポンス

大部分はOK

これはストリーミングAPIであるため、ステータス200であっても失敗する可能性があります。レスポンスでerrorMessageタグを確認してエラーを特定してください。

本体()
ルート・スキーマ : InputStream
型: 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,
            "hideRestrictedData": true,
            "cellAttributes": true,
            "formatString": true,
            "formatValues": true,
            "meaninglessCells": true,
            "textList": true,
            "urlDrillThrough": true,
            "memberIdentifierType": "NAME",
            "aliasTableName": "Default"
        }
}

この場合:

  • queryには、入力MDX文字列が含まれます。

  • preferencesには、出力セットに指定できるオプションが含まれます。次に例を示します。

    1. "dataless" : falseは、出力からのデータ値を省略しないことを意味します。
    2. "hideRestrictedData" : trueは、制限されたセル・データが出力で非表示であることを意味します。
    3. "cellAttributes" : trueは、問合せ結果が実際のデータ値の他にメタデータ属性のセットを返すことができることを意味します。
    4. "formatString" : trueは、タイプがテキストまたは日付のセル、またはフォーマット文字列に関連付けられたセルのフォーマットされた値を返すことを意味します。デフォルトでは、この設定はオンになっています。
    5. "formatValues" : trueは、通貨記号または小数点以下のセルに対してフォーマットされた値を返すことを意味します。
    6. "meaninglessCells" : trueは、無意味なセル・データが出力で抑制されることを意味します。
    7. "textList" : trueは、アウトラインがテキスト・メジャーに対して有効になっている場合のみ、出力のセルに関連付けられているすべてのテキスト値のカンマ区切りリストを返します。
    8. "urlDrillThrough" : trueは、Essbaseドリル・スルー・リンクが構成されている場合に、適用可能な各セルにURLが追加され、ユーザーがソース・データをクリックスルーできるようにすることを意味します。
    9. "memberIdentifierType" : "NAME"は、別名ではなくメンバー名が出力に含まれる必要があることを意味します。
    10. "aliasTableName" : "Default"は、memberIdentifierType: ALIASおよびaliasTableが有効な別名表名に設定されている場合、結果のmdxグリッドに指定した表のメンバー名が含まれることを意味します。このプロパティの値が設定されていない場合は、Default別名表から名前が選択されます。

レスポンス本体の例

成功した場合、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%
先頭に戻る