Write-behind foreach 示例
foreach
部分用于将对象列表或数组展开为选定目标中的行。foreach
表达式的结构为 <field_name>:<JMESPath expression>
。以下示例使用 add_field
转换来将输入 JSON 准备为所需的结构。然后,它应用 foreach
使用 keys
和 mapping
将每个 order
对象作为关系数据库记录写入。在此示例中,使用 JMESPath
函数 to_string
将对象数组 specs
展平为字符串。
source:
redis:
key_pattern: orderdetail:*
trigger: write-behind
exclude_commands: ["json.del"]
transform:
- uses: add_field
with:
fields:
- field: my_orders
language: jmespath
expression: |
orders[*].{
code: code
periodStartTime: periodStartTime
periodEndTime: periodEndTime
specs: to_string(specs)
}
output:
- uses: relational.write
with:
connection: mssql
schema: dbo
table: OrderMaster
keys:
- Code: orderDetail.code
mapping:
- DeliveryDate: orderDetail.deliveryDate
- ProductCode: orderDetail.productCode
- CountryCode: orderDetail.countryCode
- uses: relational.write
with:
connection: mssql
schema: dbo
table: Order
foreach: "order: my_orders[]"
keys:
- Code: order.code
mapping:
- OrderDetailCode: orderDetail.code
- PeriodStartTime: order.periodStartTime
- PeriodEndTime: order.periodEndTime
- Specs: order.specs