宏和宏函数

宏是 Cloud Data Fusion 插件属性配置中的占位符。它们由 ${ } 括起来的变量表示,例如 ${input_file_path}。如需为元素(例如文件路径和表名称)启用动态配置,系统会在运行时将占位符替换为实际值。

查看插件属性时,您可以向旁边带有 M 的任何属性字段添加宏。如需添加宏,请点击 M

如需了解详情,请参阅管理宏、偏好设置和运行时参数

宏函数

除了宏之外,您还可以使用以下预定义宏函数:

  • logicalStartTime()
  • secure()

逻辑开始时间函数

logicalStartTime() 宏函数会将流水线运行的逻辑开始时间作为字符串值返回。

如果未提供任何参数,则返回以毫秒为单位的开始时间。所有参数都是可选的。该函数将时间格式、偏移量和时区作为参数,并使用流水线的逻辑开始时间执行替换:

${logicalStartTime([timeFormat[,offset [,timezone])}

以下列表显示了 logicalStartTime() 的可选参数:

参数 说明
timeFormat 时间格式模式,采用 Java SimpleDateFormat 格式。
offset
逻辑开始时间之前的时间偏移。
timezone
要用于逻辑开始时间的时区。

示例

在此示例中,流水线运行的逻辑开始时间为 2020-01-01T00:00:00,您提供以下宏:

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

格式为 yyyy-MM-dd'T'HH-mm-ss,偏移量为逻辑开始时间之前的 1d-4h+30m。在运行时,宏值会被替换为 2019-12-31T03:30:00,因为偏移量转换为 20.5 小时。整个宏的计算结果为 2020 年 1 月 1 日午夜前的 20.5 小时。

在基于文件的插件中使用 logicalStartTime()

使用此函数的最常见方式是在基于文件的插件中的 Path 字段中使用。

在文件名中添加以毫秒为单位的流水线开始时间

如需在文件名中捕获实际开始时间(以毫秒为单位),请在宏函数中省略参数。

示例

在本示例中,您将流水线的开始时间(以毫秒为单位)添加到 Amazon S3 文件名中:

sales_012345671011.csv

在 Amazon S3 接收器属性中,在路径字段中输入以下值:

s3a://sales-data/sales_${logicalStartTime()}.csv

在文件名中添加当天的日期

您可以在文件名中使用 logicalStartTime() 宏函数来捕获当前日期。

示例

在此示例中,您将在以下 S3 文件名中捕获今天的日期:

s3a://sales-data/sales_20210204.csv

在 Amazon S3 接收器属性中,在路径字段中输入以下值:

s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv

使用 logicalStartTime 向结构化记录添加 Timestamp 字段

您可以使用添加字段转换和 logicalStartTime() 向结构化记录添加时间戳。

  1. 从 Cloud Data Fusion Hub 获取“Field Adder”转换插件。 部署该插件后,它会以“添加字段”的形式显示在转换列表中。
  2. 配置插件属性时,请将时间戳添加到结构化记录中。例如,对于字段名称,请输入新字段的名称;对于字段值,请输入 logicalStartTime() 宏函数。

安全函数

secure() 宏函数接受单个键作为实参,并从安全存储区中查找该键的关联字符串值。如需执行替换,作为实参提供的必须已存在于安全存储区中。这对于使用敏感数据执行替换非常有用。

示例

在此示例中,对于连接到 MySQL 数据库的插件,您可以使用以下值配置密码属性字段:

${secure(password)}

此宏会在运行时从安全存储区提取密码。

递归宏

宏可以递归引用其他宏,最多可达 10 个级别。宏参数的求值顺序为从最内层参数到最外层参数。

示例

在此示例中,您有一个服务器,该服务器引用主机名和端口。您需要提供以下运行时参数,其中最后一个参数是引用其他宏的宏:

  • hostnameexamplepetstore.com
  • port9991
  • server-address${hostname}:${port}

在流水线配置中,您可以使用以下表达式:

server-address: ${server-address}

在运行时,它会替换为以下值:

examplepetstore.com:9991

后续步骤