---
schema_version: "1"
id: 47b8fbbd1f51289ce406a7ec73ecce4e4ccbd75df134962185e7cda326feaa0a
title: append Transformation
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_integrate_append_transformation.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_append_transformation.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 7764d9c301bef257476ef5c8a7929561d675b351fe86ffcf9098c9df1fa6c1b1
description: The append transformation combines rows from multiple datasets into a single dataset.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# append Transformation

The append transformation combines rows from multiple datasets into a single dataset.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note To append rows in a Data Prep recipe, see [Append Node: Stack Rows from Different Sets of Data](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_recipe_append_rows.htm&release=264.0.0&type=5 "Use an Append node in a Data Prep recipe in CRM Analytics to stack rows from multiple sets of input data into one dataset. For example, use this node to combine sales records from two different Salesforce orgs, each containing sales transactions from a specific region."). To do it in a Data Prep Classic recipe, see [Add Rows in a Recipe with Append](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_data_prep_recipe_append_rows.htm&release=264.0.0&type=5 "Use append to add rows to the data in your recipe from another dataset or connected object. Fields are mapped automatically, or you can map them manually.").

Consider the following rules when using this transformation.

- This transformation does not remove duplicate records.
- All input dataset must have the same structure—the corresponding columns must be in the same order and have the same name and field type.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_example.png)

Example

Let’s look at an example. Each month, you create a dataset that contains the month’s sales targets. Now, you want a holistic view of sales targets for all months. To do that, you create the following dataflow to merge the existing dataset into a single dataset.

 
| Dataflow | Append Node in Dataflow |
| --- | --- |
| ![Example dataflow in dataflow editor with Append node highlighted](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_editor_append_example.png) | ![Append node dialog in dataflow editor](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_editor_append_node.png) |

Here’s the JSON dataflow.

```
{
  "Extract SalesTargets_Month3": {
    "action": "edgemart",
    "parameters": {
      "alias": "SalesTargets_Month3"
    }
  },
  "Extract SalesTargets_Month2": {
    "action": "edgemart",
    "parameters": {
      "alias": "SalesTargets_Month2"
    }
  },
  "Extract SalesTargets_Month1": {
    "action": "edgemart",
    "parameters": {
      "alias": "SalesTargets_Month1"
    }
  },
  "Append SalesTargets_Quarter1": {
    "action": "append",
    "parameters": {
      "enableDisjointedSchemaMerge": false,
      "sources": [
        "Extract SalesTargets_Month1",
        "Extract SalesTargets_Month2",
        "Extract SalesTargets_Month3"
      ]
    }
  },
  "Register AllSalesTargets": {
    "action": "sfdcRegister",
    "parameters": {
      "name": "All Sales Targets",
      "alias": "AllSalesTargets",
      "source": "Append SalesTargets_Quarter1"
    }
  }
}
```

After you create the single dataset, you can use date filters to analyze the sales targets by month, quarter, or year.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note The append transformation doesn’t remove duplicate rows.

## Append Datasets with Different Schema

By default, the input dataset must have the same structure—the corresponding columns must have the same name and field type. For example, let's say you want to append your Canada opportunities to your U.S. opportunities.

 
| US Sales | Canada Sales |
| --- | --- |
| ![Table showing 4 US opportunities](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_append_US_Sales.png) | ![Table showing 4 Canada opportunities](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_append_CA_Sales.png) |

Here, the column names are different, and the Canada data has a Currency column. For the dataflow not to fail, select **Allow disjoint schema** in the append node in the dataflow editor. If you're working in the dataflow JSON, add the `enableDisjointedSchemaMerge` parameter and set its value to `true`.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="text-align:center;vertical-align:top;" id="d58013e194">Append Node in Dataflow Editor</th>
            <th scope="col" class="slds-cell-wrap" style="text-align:center;vertical-align:top;" id="d58013e197">Append Node in Dataflow JSON</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Append Node in Dataflow Editor" class="slds-cell-wrap" style="text-align:center;vertical-align:top;" headers="d58013e194 ">
              <span style="vertical-align:text-bottom;display:inline-block;"><img style="width:400px;margin-bottom:0;" src="https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_append_editor_node.png" alt="Append node in dataflow editor with Allow disjoint schema checkbox highlighted"></span>
            </td>

            <td data-label="Append Node in Dataflow JSON" class="slds-cell-wrap" style="text-align:center;vertical-align:top;" headers="d58013e197 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>  "Append US &amp; CA Sales": {
    "action": "append",
    "parameters": {
      "enableDisjointedSchemaMerge": true,
      "sources": [
        "Extract US Sales",
        "Extract CA Sales"
      ]
    }
  },</code></pre>
            </td>

          </tr>
        </tbody>
      </table>

When you run the dataflow, the data is merged without the dataflow failing.

![Table of combined US and Canada opportunities](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_integrate_dataflow_append_all_rows.png)

The append transformation adds all columns to the dataset and merges values in columns with the same name, such as Name. It also adds null values in a column for rows that didn’t previously have that column, such as in the Currency column.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note If null measure handling in datasets isn’t enabled for your org, append adds zeros in a column for rows that didn’t previously have that column.

- **[append Parameters](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_append_operation.htm&release=264.0.0&type=5)**  
    When you define an append transformation in the dataflow JSON, you set the action attribute to `append` and specify the parameters.