Write-behind foreach example
The foreach
section is used in order to explode a list of objects or arrays to rows in a selected target.
The foreach
expression is structured as <field_name>:. The following example uses the
add_fieldtransformation to prepare the input JSON to the desired structure. Then, it applies
foreachto write each
orderobject as a relational database record using
keysand
mapping. In this example, the
JMESPathfunction
to_stringis used to flatten an array of objects
specs` to a string.
source:
keyspace:
pattern: orderdetail:*
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