グローバル・データソースの作成
/essbase/rest/v1/datasources
指定された入力内容に基づいてグローバルレベルのデータソースを作成します。name
、connection
およびtype
は、すべてのタイプのデータソースに必須の入力内容です。必要なその他の入力内容は、データソースのタイプによって異なります。
リクエスト
- application/json
- application/xml
データソースの詳細。
object
- application(required): string
データソースのtypeがESSBASEである場合に適用可能。Essbaseアプリケーション名。
- columns(required): object ColumnsType
- connection(required): string
このデータソースで使用される接続。
- cube(required): string
データソースのtypeがESSBASEである場合に適用可能。Essbaseデータベース名。
- customDelimiter: string
delimiterに指定されている値が
Custom
である場合の、データ・レコードのカスタム・デリミタ。 - delimeter: string
データソースのtypeが
DELIMITEDFILE
である場合の、データ・レコードのデリミタ。デリミタは、CSVフォーマットの場合はComma
、タブ区切りフォーマットの場合はTab
にできます。カスタム・デリミタを使用するには、値Custom
を使用し、デリミタをcustomDelimiterの値として指定します。 - description(required): string
このデータソースのオプションの説明。
- endRow: integer(int64)
データソースがExcelファイルまたはテキスト・ファイルである場合の、終了行番号。
- headerRow: integer(int64)
データソースがExcelファイルまたはテキスト・ファイルである場合の、ヘッダー行番号。ヘッダーがない場合は0。
- headers: array headers
- ignoreErrorRecords: boolean
- links: array links
- name: string
データソース名。先頭は文字である必要があります。文字、アンダースコア文字および数字のみを含めることができます。
- query(required): string
データソースに関連付けられている問合せ。たとえば、外部データベースの場合はSQL問合せ、または別のEssbaseキューブの場合はMDX問合せ。問合せによって、このデータソース内の使用可能にするデータが選択されます。
- queryParameters: array queryParameters
データソース問合せがパラメータ化されている場合の、パラメータ実装詳細。たとえば、問合せ
select * from profit_data where year=?
のように、パラメータを渡すための?
プレースホルダが問合せに含まれる場合、実装詳細を定義する必要があります。 - sheet(required): string
データソースがExcelファイルである場合の、ワークシート名。
- skipHiddenRows: boolean
- startRow(required): integer(int64)
オプション(指定されていない場合、デフォルトは1です)。データソースがExcelファイルまたはテキスト・ファイルである場合の、(headerRowが存在する場合はこれを除いた)データ開始行番号。たとえば、headerRowが1として指定され、startRowが10として指定されている場合、実際のデータ開始行は11になります。
- type(required): string
指定可能な値:
[ "TEMPLATE", "EXCELFILE", "DB", "DELIMITEDFILE", "FIXEDWIDTHFILE", "BI", "ESSBASE", "JDBC", "SPARK", "MS_SQL", "MYSQL", "DB2", "ORACLE", "FILE" ]
- widths(required): array widths
array
データソース問合せがパラメータ化されている場合の、パラメータ実装詳細。たとえば、問合せselect * from profit_data where year=?
のように、パラメータを渡すための?
プレースホルダが問合せに含まれる場合、実装詳細を定義する必要があります。
object
- format: string
- index: integer(int32)
- name: string
- nullable: boolean
- system: boolean
- type: string
指定可能な値:
[ "STRING", "DOUBLE", "DATE", "TIMESTAMP", "LONG" ]
object
- defaultValue: string
実行時にパラメータに無効なコンテキストがある場合に、データソースがフォールバックとして使用する固定のデフォルト・パラメータ値。例: Jan。データソース問合せがパラメータ化されており(パラメータを渡すための
?
プレースホルダが含まれている)、かつプレースホルダが代替変数を参照することも、外部ソースで開発されたユーザー定義関数を参照することも意図されていない場合にのみ必須。 - index: integer(int32)
データソース問合せパラメータの順序インデックス。たとえば、最初のパラメータの場合は1、2番目のパラメータの場合は2、など。
- name: string
各自のユースケースに対して意味のある、データソース問合せパラメータのオプションの名前。たとえば、Param1のかわりにparam_G_monthを使用して、そのパラメータで現在の月のグローバル変数を使用することを示したり、名前をparam_appName_monthに変更して、そのパラメータで現在の月のアプリケーション・レベルの変数を使用することを示すことができます。
- required: boolean
データソース問合せパラメータが必須の場合はtrue、それ以外の場合はfalse。
- subVariableName: string
useSubVariableがtrueの場合、Essbase代替変数の名前。
- type: string
指定可能な値:
[ "STRING", "DOUBLE", "DATE", "TIMESTAMP", "LONG" ]
データソース問合せパラメータのデータ型。
- useSubVariable: boolean
データソース問合せパラメータでEssbase代替変数を参照する場合はtrue、それ以外の場合はfalse。
レスポンス
- application/json
- application/xml
200 レスポンス
OK
データソースが正常に作成されました。
400 レスポンス
不正なリクエスト
データソースの作成に失敗しました。
例
次の例では、グローバル・データソースを作成する方法を示します。
データソースとは、Essbaseキューブへのデータ・フローおよびEssbaseキューブからのデータ・フローを管理するために使用する、Essbase内のオブジェクトです。リレーショナル・システム、表、ファイルまたは別のキューブのいずれであるかを問わず、任意の外部データ・ソースを表すようにデータソースを定義できます。1つの接続を定義し、それを使用して複数のデータソースにアクセスできます。製品、再販業者および販売テリトリに対して別々の表を持つ外部Oracle Databaseサーバーを考えてみます。Oracle Databaseにアクセスする接続は1つのみ必要ですが、それぞれの表にアクセスするための一意のデータソースがあると役立つ場合があります。
この例では、必要な接続をすでに作成済であることを想定しています。データのファイルまたはその他のソース用のデータソースを作成する前に、ソースへの接続を作成して、データソースで接続を参照できるようにする必要があります。「接続の作成」エンドポイントを参照してください。
これら例では、cURLを使用して、Windowsシェル・スクリプトからREST APIにアクセスします。呼出し元ユーザーのIDおよびパスワードは変数であり、properties.bat
内でその変数値が設定されています。
cURLコマンドを含むスクリプト
call properties.bat
curl -X POST "https://myserver.example.com:9001/essbase/rest/v1/datasources/?links=none" -H Accept:application/json -H Content-Type:application/json --data "@./DS_details.json" -u %User%:%Password%
前述のcURLの例では、JSONペイロードがDS_details.json
でEssbaseに配信されます。ペイロードに含める詳細によって、作成されるデータソースの種類が決まります。
Essbaseでサポートされる各種ソース用のデータソースを作成できるJSONペイロードの例は、次を参照してください。
サンプルのJSONペイロード - 区切りテキスト・ファイル
次のようなデータのテキスト・ファイルを考えてみます。ここで、最初のレコードはヘッダー行であり、フィールドは#
で区切られています。
Product#Scenario#Measures#Mar#Apr
Colas#Actual#Opening Inventory#2041#2108
Colas#Actual#Ending Inventory#2108#2250
Colas#Budget#Opening Inventory#1980#2040
Colas#Budget#Ending Inventory#2040#2170
Root Beer#Actual#Opening Inventory#2378#2644
Root Beer#Actual#Ending Inventory#2644#2944
Root Beer#Budget#Opening Inventory#2220#2450
Root Beer#Budget#Ending Inventory#2450#2710
cURLによってDS_details.json
でREST APIに渡される次のサンプルのJSONペイロードは、前述のようなテキスト・ファイル用のデータソースを作成する場合の例です。
必須パラメータは、name、connection、typeおよびcolumnsです。Columnごとに、その名前、型および最初の列が0で始まる順序インデックスを指定します。
{
"name" : "delimitedfile_DS"
"connection" : "delimitedfile_conn",
"type" : "DELIMITEDFILE",
"delimiter" : "Custom",
"customDelimiter" : "#",
"headerRow" : 1,
"startRow" : 1,
"columns" : {
"Column" : [ {
"name" : "Product",
"type" : "STRING",
"index" : 0
}, {
"name" : "Scenario",
"type" : "STRING",
"index" : 1
}, {
"name" : "Measures",
"type" : "STRING",
"index" : 2
}, {
"name" : "Mar",
"type" : "STRING",
"index" : 3
}, {
"name" : "Apr",
"type" : "STRING",
"index" : 4
} ]
}
}
サンプルのJSONペイロード - Excelワークブック
最初のレコードがヘッダー行で、データがSpendHistoryという名前のワークシート上にあるExcelワークブックを考えてみます。ヘッダー行には、Year、Quarter、Month、Purchase Organization、Category、Product Name、Org Name、Suppliers、Spend、Addressable Spendなどの列が含まれています。
ノート:
このワークブックは、ファイル・カタログで入手できます(All Files/ gallery/ Technical/Table Format/Unstr_NoHints.xlsx
)。
cURLによってDS_details.json
でREST APIに渡される次のサンプルのJSONペイロードは、前述のようなExcelワークシート用のデータソースを作成する場合の例です。
必須パラメータは、name、connection、sheet、typeおよびcolumnsです。Columnごとに、各列の名前、別名、型および最初の列が0で始まる順序インデックスを指定します。
{
"connection": "excel_conn",
"description": "Datasource to Excel file",
"headerRow": 1,
"name": "excelDS",
"sheet": "SpendHistory",
"startRow": 1,
"type": "EXCELFILE",
"columns": {
"Column": [
{
"index": 1,
"name": "Year",
"type": "STRING"
},
{
"index": 2,
"name": "Quarter",
"type": "STRING"
},
{
"index": 3,
"name": "Month",
"type": "STRING"
},
{
"index": 4,
"name": "Purchase Organization",
"type": "STRING"
},
{
"index": 5,
"name": "Category",
"type": "STRING"
},
{
"index": 6,
"name": "Product Name",
"type": "STRING"
},
{
"index": 7,
"name": "Org Name",
"type": "STRING"
},
{
"index": 8,
"name": "Suppliers",
"type": "STRING"
},
{
"index": 9,
"name": "Spend",
"type": "STRING"
},
{
"index": 10,
"name": "Addressable Spend",
"type": "STRING"
},
{
"index": 11,
"name": "Non-Addressable Spend",
"type": "STRING"
},
{
"index": 12,
"name": "Invoiced Quantity",
"type": "STRING"
},
{
"index": 13,
"name": "Invoiced Amount",
"type": "STRING"
}
]
}
}
サンプルのJSONペイロード - Oracle Database
cURLによってDS_details.json
でREST APIに渡される次のサンプルのJSONペイロードは、Oracle Database用のデータソースを作成する場合の例です。必須パラメータは、name、connection、type、columnsおよびqueryです。問合せがパラメータ化されている場合は、queryParametersとして実装詳細を指定します。詳細は、データソースのパラメータの実装を参照してください。
{
"name" : "Orcl_DS",
"connection" : "oraConn",
"type" : "DB",
"columns" : {
"Column" : [ {
"name" : "DIMENSION_PRODUCT",
"type" : "STRING",
"index" : 1
}, {
"name" : "DIMENSION_MARKET",
"type" : "STRING",
"index" : 2
}, {
"name" : "DIMENSION_YEAR",
"type" : "STRING",
"index" : 3
}, {
"name" : "DIMENSION_SCENARIO",
"type" : "STRING",
"index" : 4
}, {
"name" : "SALES",
"type" : "DOUBLE",
"index" : 5
}, {
"name" : "COGS",
"type" : "DOUBLE",
"index" : 6
}, {
"name" : "MARKETING",
"type" : "DOUBLE",
"index" : 7
}, {
"name" : "PAYROLL",
"type" : "DOUBLE",
"index" : 8
}, {
"name" : "MISC",
"type" : "DOUBLE",
"index" : 9
}, {
"name" : "INITIAL_INVENTORY",
"type" : "DOUBLE",
"index" : 10
}, {
"name" : "ADDITIONS",
"type" : "DOUBLE",
"index" : 11
} ]
},
"query" : "select * from SB_DATA where dimension_year=?",
"queryParameters" : [ {
"index" : 1,
"name" : "Param1",
"required" : false,
"useSubVariable" : true,
"subVariableName" : "CurrMonth",
"type" : "STRING"
} ]
}
サンプルのJSONペイロード - 別のEssbaseキューブ
cURLによってDS_details.json
でREST APIに渡される次のサンプルのJSONペイロードは、別のEssbaseキューブ用のデータソースを作成する場合の例です。必須パラメータは、name、connection、type、columns、application、cubeおよびqueryです。
{
"name":"EssbaseDS",
"type":"ESSBASE",
"connection":"essconn",
"columns":{
"Column":[
{
"index":1,
"name":"Measures",
"type":"STRING"
},
{
"index":2,
"name":"Oregon",
"type":"STRING"
},
{
"index":3,
"name":"Florida",
"type":"STRING"
},
{
"index":4,
"name":"Utah",
"type":"STRING"
}]
},
"query":"select {Sales} on rows ,{Oregon, Florida, Utah} on columns",
"application":"Sample",
"cube":"Basic"
}