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()混合傳回值中定義的維度成員名稱。