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 appliesforeachto write eachorderobject as a relational database record usingkeysandmapping. In this example, the JMESPathfunctionto_stringis used to flatten an array of objectsspecs` 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