跳至主要內容
Adaptive Planning
上次更新時間 :2023-06-23
ai.dataSource

ai.dataSource

​資料來源包含設定和表格。

函數

方法
參數
退貨
說明
getTables()
Array<ai.dataSource.table>
傳回匯入表格的清單。
getTable(tableId)
tableId : String 表格的遠端 ID
ai.dataSource.table
傳回具有所要求表格 ID 的表格。如果找不到表格,則傳回空值。
getSettings()
Array<ai.dataSource.setting>
傳回所有彈性設定。
getSetting( displayName )
displayName : 設定的字串名稱
ai.dataSource.setting
按顯示名稱傳回彈性設定
範例
function previewData(context) { var dataSource = context.getDataSource(); var allTablesInThisDataSource = dataSource.getTables(); //Navigate to Designer Settings tab, drag and drop a Static Integer parameter from the Settings Component //Setting Name: Custom Integer and Value: 100 var getSetting=dataSource.getSetting("Custom Integer" ); ai.log.logInfo(getSetting.getValue()); //100 }

ai.dataSource.table

方法
參數
退貨
說明
getColumnByDisplayName( name )
name : String 欄的顯示名稱
ai.dataSource.column
按欄的顯示名稱尋找欄。如果找不到欄,則傳回空值。
getColumnById( id )
id : 字串 - 欄的遠端 ID
ai.dataSource.column
依欄位的遠端 ID 尋找欄。如果找不到欄,則傳回空值。
getColumns()
Array<ai.dataSource.column>
傳回所有已啟用資料匯入的子欄。
getDisplayName()
String
傳回表格的顯示名稱。
getId()
String
傳回此表格的遠端 ID,如果未指定遠端 ID,則傳回顯示名稱。
getLastImported()
String
傳回用來識別表格上次匯入時間的字串。
getRelationships()
Array<ai.dataSource.relationship>
傳回以此表格為主表格的所有關係。
getRequiredParameters()
Array<ai.dataSource.table.requiredParameter>
傳回所有表格必要參數及其參數值。
getRequiredParameter( ID )
id : 必要參數在匯入結構期間定義的字串遠端 ID
ai.dataSource.table.requiredParameter
依遠端 ID 傳回表格必填參數。
範例
//Consider a sample data source dataSample = { rows: [ {"Value": 10, "Measure": "", "Test": "No Space", "Effective Date": "2018-11-01"}, {"Value": 20, "Measure": " ", "Test": "One Space", "Effective Date": "2018-11-01"}, {"Value": 30, "Measure": " ", "Test": "Two Spaces", "Effective Date": "2018-11-01"}, {"Value": 40, "Measure": " ", "Test": "Three Spaces", "Effective Date": "2018-11-01"}, {"Value": 50, "Measure": "1 ", "Test": "Aus" + '\\-' + "tin" + '\\-', "Effective Date": "2018-11-01"}, {"Value": 10, "Measure": "2 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 20, "Measure": "3 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 30, "Measure": "4 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 40, "Measure": "5 ", "Test": "Austin", "Effective Date": "2018-12-01"} ] }; ExternalMetadataDefinition = { Tables : [ { name : "dataSample", displayName : "Sample", id:"dataSample", parameterId:"sampleParameter", columns : [ {name : "Value", displayName : "Value", type: "float", includeByDefault : true, }, {name : "Measure", displayName : "Measure", type: "text", includeByDefault : true}, {name : "Test", displayName : "Test", type: "text", includeByDefault : true}, {name : "Effective Date", displayName : "Date", type : "datetime", includeByDefault : true} ] } ] }; //Create a table structure function importStructure(context) { var addColumn = function(table, column, order) { var recordColumn = table.addColumn(column.name); recordColumn.setDisplayName(column.displayName); switch (column.type) { case "text": recordColumn.setTextColumnType(column.length); break; case "int": recordColumn.setIntegerColumnType(); break; case "float": recordColumn.setFloatColumnType(); break; case "boolean": recordColumn.setBooleanColumnType(); break; case "datetime": recordColumn.setDateTimeColumnType(); break; default: recordColumn.setTextColumnType(200); break; } recordColumn.setDisplayOrder(order); recordColumn.setIncludeByDefault(column.includeByDefault || false); recordColumn.setIncludeInKey(column.includeInKey || false); recordColumn.setMandatoryForImports(column.mandatoryForImport || false); recordColumn.setRemoteColumnType(column.remoteColumnType || "String"); }; var builder = context.getStructureBuilder(); var dataSource=context.getDataSource(); for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++) { var externalTable = ExternalMetadataDefinition.Tables[i]; var table = builder.addTable(externalTable.name); table.setDisplayName(externalTable.displayName); for (var j = 0; j < externalTable.columns.length; j++) { addColumn(table, externalTable.columns[j], j + 1); } } } //Examples for ai.datasource.table function importData(context){ var dataSource = context.getDataSource(); var alltablesinds=dataSource.getTables(); var rowset=context.getRowset(); //Example: getTableId; var tableId = rowset.getTableId(); ////dataSample var table= dataSource.getTable( tableId ); //Example: getDisplayName var dname=table.getDisplayName(); //Sample ai.log.logInfo("Table Display Name",dname); //Example: getLastImported var lastImported=table.getLastImported(); ai.log.logInfo("Last Imported:",lastImported); //Last Imported 10/23/2020 01:12:59 //Example: getId ai.log.logInfo("Table id",table.getId()) //dataSample }

ai.dataSource.table.column

方法
參數
退貨
說明
getColumnType()
String
傳回欄類型。值為「DateTimeColumn」、「IntegerColumn」、「FloatColumn」、「BooleanColumn」或「TextColumn」。
getDisplayName()
String
傳回欄的顯示名稱。
getDisplayOrder()
String
傳回欄的顯示順序。
getId()
String
傳回欄的遠端 ID,或顯示名稱是未指定的遠端 ID。
getIncludeByDefault()
Boolean
如果欄包含在資料匯入中,則傳回 True。
getIncludeInKey()
Boolean
如果欄是表格索引鍵的一部分,則傳回 True。索引欄不允許空值。
getLength()
整數
注意︰僅適用於 TextColumn。傳回 TextColumn 中保存的值的長度上限。
getMandatoryForImports()
True
如果該欄必須是資料匯入的一部分,則傳回 True。
getNonFilterable()
True
如果無法將欄用作 SQL 篩選條件 (WHERE 陳述式) 的一部分,則傳回 True。
getRemoteColumnType()
String
傳回在匯入結構指令碼中定義的欄遠端欄類型。
範例
//Consider a sample JSON data set dataSample = { rows: [ {"Value": 10, "Measure": "", "Test": "No Space", "Effective Date": "2018-11-01"}, {"Value": 20, "Measure": " ", "Test": "One Space", "Effective Date": "2018-11-01"}, {"Value": 30, "Measure": " ", "Test": "Two Spaces", "Effective Date": "2018-11-01"}, {"Value": 40, "Measure": " ", "Test": "Three Spaces", "Effective Date": "2018-11-01"}, {"Value": 50, "Measure": "1 ", "Test": "Aus" + '\\-' + "tin" + '\\-', "Effective Date": "2018-11-01"}, {"Value": 10, "Measure": "2 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 20, "Measure": "3 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 30, "Measure": "4 ", "Test": "Austin", "Effective Date": "2018-12-01"}, {"Value": 40, "Measure": "5 ", "Test": "Austin", "Effective Date": "2018-12-01"} ] }; ExternalMetadataDefinition = { Tables : [ { name : "dataSample", displayName : "Sample", id:"dataSample", parameterId:"2018-01-01", columns : [ {name : "Value", displayName : "Value", type: "float", includeByDefault : true, }, {name : "Measure", displayName : "Measure", type: "text", includeByDefault : true}, {name : "Test", displayName : "Test", type: "text", includeByDefault : true}, {name : "Effective Date", displayName : "Date", type : "datetime", includeByDefault : true} ] } ] }; function testConnection(context) { return true; } //Create a table structure function importStructure(context) { var addColumn = function(table, column, order) { var recordColumn = table.addColumn(column.name); recordColumn.setDisplayName(column.displayName); switch (column.type) { case "text": recordColumn.setTextColumnType(column.length); break; case "int": recordColumn.setIntegerColumnType(); break; case "float": recordColumn.setFloatColumnType(); break; case "boolean": recordColumn.setBooleanColumnType(); break; case "datetime": recordColumn.setDateTimeColumnType(); break; default: recordColumn.setTextColumnType(200); break; } recordColumn.setDisplayOrder(order); recordColumn.setIncludeByDefault(column.includeByDefault || false); recordColumn.setIncludeInKey(column.includeInKey || false); recordColumn.setMandatoryForImports(column.mandatoryForImport || false); recordColumn.setRemoteColumnType(column.remoteColumnType || "String"); }; var builder = context.getStructureBuilder(); var dataSource=context.getDataSource(); for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++) { var externalTable = ExternalMetadataDefinition.Tables[i]; var table = builder.addTable(externalTable.name); table.setDisplayName(externalTable.displayName); for (var j = 0; j < externalTable.columns.length; j++) { addColumn(table, externalTable.columns[j], j + 1); } } } //Examples for ai.datasource.table.column function importData(context) { var columnArray = rowset.getColumns(); var colIds=[]; var colDisplayNames=[]; var colTypes=[]; var colDisplayOrder=[]; var colIncludeByDefault=[]; var colLength=[]; for (var k = 0; k < columnArray.length; k++) { //Example:getColumnType colTypes.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getColumnType().toString()); //Example:getDisplayName colDisplayNames.push(columnArray[k].getDisplayName().toString()); //Example:getDisplayOrder colDisplayOrder.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getDisplayOrder().toString()); //Example:getId colIds.push(columnArray[k].getId().toString()); //Example:getIncludeByDefault colIncludeByDefault.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getIncludeByDefault().toString()); //Example:getLength if(columnArray[k].getColumnType()==="TextColumn") { colLength.push(columnArray[k].getDisplayName().toString()+":"+columnArray[k].getLength()); } } ai.log.logInfo("Column Ids are "+colIds); //Column Ids are Effective Date,Value,Measure,Test ai.log.logInfo("Column Display names are "+colDisplayNames); //Column Display names are Date,Value,Measure,Test ai.log.logInfo("Column Types are "+colTypes); //Column Types are Date: DateTimeColumn, Value:FloatColumn, Measure:TextColumn,Test:TextColumn ai.log.logInfo("Column Display Order: "+colDisplayOrder); //Column Display Order: Date:4,Value:1,Measure:2,Test:3 ai.log.logInfo("Column Included by Default:"+colIncludeByDefault); //Column Included by Default:Date:true,Value:true,Measure:true,Test:true ai.log.logInfo("Length - "+colLength); //Length - Measure:200,Test:200 }

ai.dataSource.table.relationship

函數
方法
參數
退貨
說明
getJoinExpression()
String
傳回關係的運算式儲存 SQL,例如'P.Column123 = R.Column321'.
getJoinType()
整數
傳回關係的聯結類型。值為 0 (Inner)、1 (LeftOuter) 或 2 (RightOuter)。
getDisplayName()
String
傳回關係的顯示名稱。
getRelatedTableId()
String
傳回關係相關表格的遠端 ID,或未指定其顯示名稱的遠端 ID。
getRelatedTableName()
String
傳回關係相關表格的顯示名稱。

ai.dataSource.setting

彈性設定是自訂雲端資料來源的子系項目。設定可以是靜態的 (即已配置值),也可以是參數化的 (即在指令碼執行階段提示使用者輸入設定的值)。設定用途的範例包括指令碼可存取的 URL、使用者名稱、密碼、日期範圍或維度。
函數
方法
參數
退貨
說明
getDisplayName()
String
傳回設定的顯示名稱。
getValue()
混合
傳回設定參數的值。值可以是基本類型或複雜物件 - 請參閱下方的「值類型」。
isBoolean()
Boolean
如果設定類型為布林值,則傳回 True。
isDimension()
Boolean
如果設定類型為「維度」,則傳回 True。
isInteger()
Boolean
如果設定類型為整數,則傳回 True。
isPassword()
Boolean
如果設定類型為「密碼」,則傳回 True。
isPeriodRange()
Boolean
如果設定類型為 PeriodRange,則傳回 True。
isText()
Boolean
如果設定類型為「文字」,則傳回 True。
範例
//Navigate to Designer Settings tab and drag an Integer Static parameter from the Settings Component pane //Name the setting Custom Integer and set the value to 100 var dataSource= context.getDataSource(); var setting=dataSource.getSetting("Custom Integer" ); //Example: getDisplayName var name = setting.getDisplayName(); //Custom Integer //Example: getValue var value = setting.getValue(); //100 // DataType checkup for the setting. if(setting.isInteger()){ ai.log.logInfo("Setting is of the type Integer"); //Setting is of the type Integer } //Check for other data types using setting.isPeriodRange(), setting.isInteger(), setting.isBoolean(), setting.isText(), setting.isPassword(), setting.isDimension();
值類型
每個設定的 getValue() 函數都可以傳回基本類型或複雜物件。
布林值設定︰getValue
() 將值傳回布林值。
文字設定︰getValue
() 以字串的形式傳回值。
整數設定︰getValue
() 以整數的形式傳回值。
密碼設定︰getValue
() 以字串的形式傳回值。
期間範圍設定︰getValue
() 以復雜物件的形式傳回值。此物件的定義如下︰
方法
參數
退貨
說明
getFromPeriod()
String
傳回定義已解析的內部表示形式的字串
Adaptive Planning
可用於傳遞至 ai.calendar 方法呼叫的起始期間。例如"3152|5201611100000"
getToPeriod()
String
傳回定義已解析的內部表示形式的字串
Adaptive Planning
可用於傳遞至 ai.calendar 方法呼叫的結束期間。例如"3152|5201611100000"
getFromPeriodStartDateTime()
String
傳回「開始」期間開始日期時間的日期時間字串表示形式,以當地時間表示。例如「2016-01-01T00︰00︰00+10︰00」
getFromPeriodEndDateTime()
String
傳回開始期間結束日期時間的日期時間字串表示形式,以當地時間表示。例如「2016-02-01T00︰00︰00+10︰00」
getToPeriodStartDateTime()
String
傳回以當地時間表示的「結束」期間開始日期時間的日期時間字串表示形式。例如「2016-06-01T00︰00︰00+10︰00」
getToPeriodEndDateTime()
String
傳回以當地時間表示的「結束」期間結束日期時間的日期時間字串表示形式。例如「2016-07-01T00︰00︰00+10︰00」
範例
function importData(context) { var dataSource = context.getDataSource(); //getFromPeriod var getFromPeriod=dataSource.getSetting("Period Range").getValue().getFromPeriod(); //getToPeriod var getToPeriod=dataSource.getSetting("Period Range").getValue().getToPeriod(); //getFromPeriodStartDateTime var getFromPeriodStartDateTime = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10); ai.log.LogInfo("getFromPeriodStartDateTime"+getFromPeriodStartDateTime); //2017-12-01 //getFromPeriodEndDateTime var getFromPeriodEndDateTime = dataSource.getSetting("Period Range").getValue().getFromPeriodEndDateTime().substring(0, 10); ai.log.LogInfo("getFromPeriodEndDateTime"+getFromPeriodEndDateTime); //2017-12-31 //getToPeriodStartDateTime var getToPeriodStartDateTime = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10); ai.log.LogInfo("getToPeriodStartDateTime"+getToPeriodStartDateTime); //2018-01-01 //getToPeriodEndDateTime var getToPeriodEndDateTime = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10); ai.log.LogInfo("getToPeriodEndDateTime"+getToPeriodEndDateTime); //2018-01-30 }

維度設定

getValue() 會將值以復雜物件的形式傳回。此物件的定義如下︰
方法
參數
退貨
說明
getDimensionName()
String
傳回值中定義的維度名稱。
getValueName()
混合
傳回值中定義的維度成員名稱。
範例
//Navigate to Designer Settings tab and drag a Static Dimension parameter from the Settings Component pane //Name the setting "Custom Dimension" and set a value from the Static Dimension Setting dropdown var setting=dataSource.getSetting("Custom Dimension" ); var value = setting.getValue(); //Example: getDisplayName var name = value.getDimensionName(); var settingValue=value.getValueName(); ai.log.logInfo("Dimension Settings Name: "+name+" and Dimension Settings Value: "+settingValue); //Dimension Settings Name: Level and Dimension Settings Value: Company B (40% owned)Example for Dimension Settings //Navigate to Designer Settings tab and drag a Static Dimension parameter from the Settings Component pane //Name the setting "Custom Dimension" and set a value from the Static Dimension Setting dropdown var setting=dataSource.getSetting("Custom Dimension" ); var value = setting.getValue(); //Example: getDisplayName var name = value.getDimensionName(); var settingValue=value.getValueName(); ai.log.logInfo("Dimension Settings Name: "+name+" and Dimension Settings Value: "+settingValue); //Dimension Settings Name: Level and Dimension Settings Value: Company B (40% owned)

ai.dataSource.table.requiredParameter

在指令碼執行期間,有效的必要參數會提示使用者提供值。然後即可在指令碼中存取這些值。可在 importStructure 期間建立必要參數。
在 ImportData 期間,只能在指令碼中存取已可配置為 setForDataImport(true) 的必要參數。
函數
方法
參數
退貨
說明
getId()
String
傳回必要參數的遠端 ID。
getValue()
混合
傳回必要參數的參數值。值可以是基本類型或複雜物件 - 請參閱下方的「值類型」。
isBoolean()
Boolean
如果必填參數的類型為布林值,則傳回 True。
isDimension()
Boolean
如果必填參數的類型為「維度」,則傳回 True。
isInteger()
Boolean
如果必填參數的類型為整數,則傳回 True。
isPassword()
Boolean
如果必填參數的類型為「密碼」,則傳回 True。
isPeriodRange()
Boolean
如果必填參數的類型為 PeriodRange,則傳回 True。
isText()
Boolean
如果必填參數的類型為「文字」,則傳回 True。
值類型
每個必要參數的 getValue() 函數都可以傳回基本類型或複雜物件。
布林值 - 必要參數
getValue() 以布林值的形式傳回值。
文字 - 必要參數
getValue() 以字串的形式傳回值。
整數必要參數
getValue() 以 Integer 的形式傳回值。
密碼必要參數
getValue() 以字串的形式傳回值。
期間範圍必要參數
getValue() 會將值以復雜物件的形式傳回。此物件的定義如下︰
方法
參數
退貨
說明
getFromPeriod()
String
傳回定義已解析項目的字串
Adaptive Planning
開始期間例如「月 y2016 M1」
getToPeriod()
String
傳回定義已解析項目的字串
Adaptive Planning
結束期間。例如「月 y2016 M1」
getFromPeriodStartDateTime()
String
傳回「開始」期間開始日期時間的日期時間字串表示形式,以當地時間表示。例如「2016-01-01T00︰00︰00+10︰00」
getFromPeriodEndDateTime()
String
傳回開始期間結束日期時間的日期時間字串表示形式,以當地時間表示。例如「2016-02-01T00︰00︰00+10︰00」
getToPeriodStartDateTime()
String
傳回以當地時間表示的「結束」期間開始日期時間的日期時間字串表示形式。例如「2016-06-01T00︰00︰00+10︰00」
getToPeriodEndDateTime()
String
傳回以當地時間表示的「結束」期間結束日期時間的日期時間字串表示形式。例如「2016-07-01T00︰00︰00+10︰00」
維度設定
getValue() 會將值以復雜物件的形式傳回。此物件的定義如下︰
方法
參數
退貨
說明
getDimensionName()
String
傳回值中定義的維度名稱。
getValueName()
混合
傳回值中定義的維度成員名稱。