跳至主要内容
Adaptive Planning
上次更新时间 :2024-03-08
创建自定义云加载器

创建自定义云加载器

构建自定义云加载器需要拥有全面的 JavaScript 编程知识和经验。如果没有经验丰富的 JavaScript 程序员,您不应一开始就创建自定义云加载器。您还必须在“管理”>“权限集”中获得“集成开发者”权限,才能尝试创建自定义云加载器。
自定义云加载器可让您导出
Adaptive Planning
将 Plan 数据直接传输到第三方云系统。
观看视频:
3 分 16 秒

基本步骤

  1. 输入数据源设置。
  2. 定义参数。
  3. 在中使用 CCDS API 编写 JavaScript ai 命名空间
  4. 定义业务规则。
  5. 运行加载器或为其排定时间表。

先决条件

  • 确认您有“集成开发者”权限。
  • 验证:
    Adaptive Planning
    暂存表中已存在您要导出的计划数据。
  • 为您的外部系统创建 OAuth 凭据,或获取可明确包含在 JavaScript 中的凭据。
  • 了解您需要向外部系统传递哪些参数,以及外部系统需要哪些默认值。
  • 了解如何写入外部系统的端点。

导航

Compass.png 从导航菜单中,转至“集成”
“设计集成”。

输入数据源设置

您可以借助数据源设置,从实例的暂存数据中选择要使用的源表格,确定要使用的凭据以及在加载器运行期间日志的详细程度。

新建自定义云加载器

  1. 转至“集成”>“设计集成”
    ,以访问数据设计器。
  2. 在“组件库”的“加载器”文件夹中,选择“新建加载器”
  3. 选择“自定义云加载器”
    作为加载器类型,然后输入名称。
    如果您没有看到“自定义云加载器”这个选项,则说明此实例未启用该选项,或者您没有访问该选项所需的“集成开发者”权限。
  4. 选择“创建”

选择源表格、凭据和日志级别

  1. 输入自定义云加载器的信息:
    • 源表格:
      选择一个暂存表,其中包含
      Adaptive Planning
      选择要导出的 Planning 数据。
    • 需要凭据:
      如果外部系统需要 OAuth,并且您要求用户具有“集成操作者”权限才能选择相应的 OAuth 凭据,请选择此选项。
    • 凭据:
      选择预先存在的 OAuth 凭据。
    • 日志级别:
      选择加载器运行时日志记录的详细程度:
      • 错误
        仅记录错误。
      • 信息
        记录所有基本信息,例如数据源的更新时间。
      • 详细
        提供有关所有阶段和操作的详细信息。主要用于调试或审核,因为其产生的日志信息量可能超出一般用途的实际所需。
  2. 在“操作”菜单中,单击“保存”

定义参数

定义您的 JavaScript 需要导出哪些参数
Adaptive Planning
将数据传输到外部系统。参数可包括以下位置的连接 URL、用户名、密码和维度:
Adaptive Planning
和其他信息。参数化设置使您可以在运行期间内更改它的值。静态设置在加载器运行时间内持续有效。
  1. 选择“设计器设置”
  2. 将参数化设置或静态设置条目从“设置组件”
    窗格拖到“设计器设置”
    中。
    • 如果您在加载器运行期间内未提供其他设置值,则在此处输入的参数化设置值会变成加载器默认值。
    • 每次运行加载器时,都会使用您在此处输入的静态设置,因此不需要在运行期间进行输入。
      • 布尔值:一个以 1 或 0 表示的值。
      • 维度:维度管理中的维度
        Adaptive Planning
      • 整数:一个非负整数。
      • 密码:一个密码。此值一经保存,便无法查看。
      • 期间范围:从以下时间范围开始的时段范围
        Adaptive Planning
      • 文本:一个字母数字值。
  3. 双击参数条目可输入名称并更改其值。
  4. 拖入您需要在 JavaScript 中引用的条目,数量不限。
  5. 保存加载器。
  6. 在 JavaScript 中使用参数的名称来引用该参数。

编写 JavaScript

  1. 选择“脚本”
  2. 选择预先存在的模板并进行更改,或者选择“新建脚本”
    来创建自己的模板。
  3. 在中编写要加载器使用 CCDS API 执行的 JavaScript 脚本。 ai 命名空间
  4. 确保脚本包含以下必需项:
  5. 按名称引用您在“设计器设置”中创建的任何参数。
  6. 保存脚本。
您可以在编辑器中使用键盘快捷键 CTRL + Shift + B
设置脚本格式并美化脚本。使用 Ctrl+H
可启动查找和替换功能。
您可以将较长的脚本拆分为多个文件,以便维护。
示例:您可以包含所有
testConnection
逻辑位于一个名为的脚本中
testconnectionscript
。第二个脚本名为
exportdatascript
,可以包含所有
exportData
逻辑
如果在多个脚本中声明了相同的函数,则系统会使用最近添加的脚本中的函数。

在自定义云加载器脚本中使用 OAuth

如果您选择“需要为自定义云加载器提供凭据”,则脚本必须包含
ai.https.authorizedRequest.
有关如何创建 OAuth 凭据的信息,请参见 使用 OAuth 进行身份验证
如果您运行引用凭据的自定义云加载器,请执行以下操作:
  1. 先选择“请求授权”
    ,再运行加载器。
  2. 提供外部系统端点所需的任何其他授权详细信息,例如范围。
  3. 选择“测试连接”
    ,验证 OAuth 凭据是否已成功传递到端点。
  4. 注意“授权状态”中的授权日期和用户编号。外部系统不同,授权到期日也会不同。在“操作”窗格中选择“重置授权”,以根据需要重新授权。

定义业务规则

您可以使用业务规则创建 SQL 表达式,以限制导出到外部系统的暂存数据。系统只会加载符合筛选条件的记录。
“业务规则”选项卡包含用于输入 SQL 的文本区域。
  1. 选择“业务规则”
    选项卡。
  2. 选择“编辑”
  3. 输入 SQL 表达式。您可以单击“可用列”中的条目来将该列添加到 SQL 表达式中,而无需键入该列。
  4. 选择“应用”
    以检查您的语法。如果存在语法错误,表达式周围的边框会变红。将鼠标悬停在表达式上可查看语法错误信息。
  5. 更正所有语法错误,然后选择“应用”
    。系统只会加载与 SQL 表达式匹配的暂存行。

将自定义云加载器纳入集成任务中

自定义云加载器必须作为集成任务运行。任何集成任务均可包含一个或多个加载器。一个任务还可以包含其他集成任务和加载器。请参见 创建集成任务
最佳做法:为每个加载器设置单独的集成任务。
如果某个任务包含多个加载器,则在运行任务时会显示每个加载器的参数。如果在某个任务内的加载器中使用了通用/共享参数,则该任务仅会对此参数作出一次提示。您可以选择重设参数提示。
在运行已排定时间表的任务时,系统将使用在创建加载器时所存储参数的默认值。

CCL 脚本示例

使用以下示例连接到您的 AWS S3 实例,以导出和查看电子表格数据。您需要提供存储桶名称、钥匙、访问钥匙、秘密钥匙和区域值。有关更多信息和示例代码,请参见 ai.awss3
  1. 设置电子表格数据源。
  2. 在“加载器”窗格中,新建自定义云加载器
  3. 导航到“数据源设置”
    选项卡,然后在“源表格”
    字段中选择您的电子表格数据源。
  4. “脚本”
    选项卡中复制以下示例脚本。
    // Manually invoke this method via 'Test connection' function testConnection(context) { return true; } // Manually invoke this method via 'Run manually' function exportData(context) { //"xxx" is the name of your Amazon S3 bucket. var bucketName = 'xxx'; //Name of the sample CSV file to which data from your spreadsheet data source is exported var key = 'exampleTest.csv'; //"xxxx" is the access key for your AWS S3 bucket. var awsAccessKey = 'xxxx'; //"xxxx" is the secret key of your AWS S3 bucket. var awsSecretKey = 'xxxx'; var region = 'us-west-1'; // Step 1: Get the data var reader = context.createTableReader(); // Step 2: Process and export the data var result = "Column,Heading,Names\n"; var row = null; while ((row = reader.readRow()) !== null) { // remove meta columns we don't need row.length = row.length - 2; result += row.join() + '\n'; } ai.awss3.putFile(bucketName, key, result, region, awsAccessKey, awsSecretKey); }
  5. 在“操作”窗格中,
    选择“保存”
  6. 如要执行脚本,请在“操作”
    窗格中选择“手动运行”