Skip to main content
Level 2
September 29, 2026
Question

Understanding Grain, Target Dimension, Reconciliation, Enrichment, and Change Dimension in Orchestrated Campaigns

Hi Team,

I'm relatively new to Orchestrated Campaigns and am trying to develop a deeper understanding of a few concepts that seem closely related but are not fully explained in the documentation:

  • Grain
  • Target Dimension
  • Reconciliation
  • Enrichment
  • Change Dimension

I've reviewed the available documentation, but most examples are fairly basic. I'm hoping to get a more conceptual explanation, ideally with sample data and before/after results.


My Current Understanding


Grain

My interpretation is that grain refers to the level of detail of the dataset, or simply:

"What does a single row represent?"

Examples:

  • Customer table → 1 row = 1 Customer
  • Order table → 1 row = 1 Order
  • Claim table → 1 row = 1 Claim

Target Dimension

My understanding is that the Target Dimension represents the schema/entity that the workflow population currently belongs to.

Examples:

  • Customer
  • Order
  • Claim

Example Scenario


Customer

CustomerID
C1
C2

Orders

OrderID CustomerID
O1 C1
O2 C1
O3 C1
O4 C2

This is a standard Customer → Orders (1:N) relationship.

Areas of Confusion

  1. Is Grain always the same as the Target Dimension, or can they differ at certain points within a workflow?

  2. When using the activities below, what happens to:

    • Grain
    • Target Dimension
    • Backend Join Behavior
    • Record Count

    Activities:

    • Reconciliation
    • Enrichment
    • Change Dimension

My Current Mental Model 

Activity Grain Change? Target Dimension Change? Join Type (My Understanding) Record Count Impact
Reconciliation Yes Yes Inner Join May explode to N or remain unchanged depending on whether the relationship is 1:N or N:1
Enrichment (Linking) No No Full Outer Join Record count remains unchanged; establishes a link and exposes related attributes
Change Dimension Yes Yes Right Join Shifts the population to the target entity; row count may increase, decrease, or remain unchanged depending on the relationship

I realize some or all of the assumptions above may be incorrect, but this is the mental model I've built based on my experience so far.


What I'm Looking For

Could someone please:

  • Validate or correct the assumptions above.
  • Explain how Grain and Target Dimension differ (if they do).
  • Explain the actual backend behavior of Reconciliation, Enrichment, and Change Dimension.

If there is a better example than Customer → Orders for explaining these concepts, I'd appreciate that as well.

Thanks in advance for any guidance. The documentation feels quite high-level, and I'm looking to build a stronger conceptual understanding of when each activity should be used and how it impacts the workflow internally.

Note: Formatted by AI

2 replies

SatheeskannaK
Adobe Champion, Community Advisor, UG Leader
Adobe Champion, Community Advisor, UG Leader
October 3, 2026

​@RakeshK1 

Grain and Target Dimension: The Foundation
Grain = What does one row represent?

Customer table → 1 row = 1 Customer
Order table → 1 row = 1 Order
Target Dimension = The schema entity you're currently working with

Start: Targeting Customer (dimension) with Customer grain
After enrichment: Still Customer grain + Customer dimension
After change dimension: Now Order grain + Order dimension

------------------------------------------------
Can Grain and Dimension Differ?
In a typical workflow, they stay aligned. But here's the nuance:

Scenario 1: Enrichment

You're at Customer grain + Customer dimension. You enrich with Order data (full outer join). Now you have:

Grain: Customer (1 row per unique customer)
Dimension: Customer (but with order attributes)
Result: Aligned
Scenario 2: Change Dimension

You shift from Customer (1:N to Orders) to Order as your target. Now:

Grain: Order (1 row per order)
Dimension: Order
Result: Aligned (both shift together)
------------------------------------------------

Reconciliation (Inner Join)
Purpose: Merge data from multiple sources at the same grain level. Resolves 1:1 relationships or validates relationships exist.

Backend behavior: Uses an Inner Join — keeps only rows that match in both datasets.

Example: Reconcile Customer dataset with CRM data

Before: 100 customers
Reconcile (inner join): 95 customers
After: 95 customers (5 excluded — no match in CRM)
Result: Grain stays Customer. Dimension stays Customer. Row count decreases if there are unmatched rows.

When to use: Data quality checks, validating that IDs exist in both systems, or cleaning up incomplete records.
------------------------------------------------

Enrichment / Linking (Full Outer Join)
Purpose: Add attributes from a related entity without changing your grain or target dimension.

Backend behavior: Uses a Full Outer Join — keeps all rows from your primary table and links related data.

Example: Enrich Customers with latest Order data

Before: 100 customers (grain: Customer)
Enrich: Link to Order table
After: 100 customers (grain: Customer)
New attributes added: order_count, last_order_date, order_status, etc.

Key point: Row count stays 100. Grain stays Customer. You're not moving to order-level detail; you're enriching customer records with order context (usually aggregated: "how many orders", "last order date", not individual order rows).
------------------------------------------------

Change Dimension (Right Join)
Purpose: Shift the entire population from one entity to another (e.g., Customer → Order).

Backend behavior: Uses a Right Join — pivots the population to the target dimension.

Example: Shift from Customer to Order (1:N relationship)

Before: 100 customers (grain: Customer, dimension: Customer)
Change dimension: Customer → Order
After: 350 orders (grain: Order, dimension: Order)
Why 350? Each customer had multiple orders. If C1 has 3 orders, C2 has 4, etc., the total explodes to order-level granularity.

What happens to the data?

Each customer row expands into N order rows (1 for each order)
Customer attributes are repeated on each order row
Order-level attributes now become direct columns (not aggregated)
You retain both Customer context + Order detail
When to use: When you need to send to a system at order level, or when an action must be triggered per order (not per customer). E.g., "Send an email for each overdue order" rather than "Send one email per customer".


------------------------------------------------

Your table says it can explode to N records for 1:N relationships. This is context-dependent:

If 1:1 relationship (one Customer ID matches to one record in the other source) → record count stays the same
If 1:N is encountered and you're still at Customer grain → technically it could explode, BUT reconciliation is typically used for 1:1 matching (data sources at the same grain level)
Inner Join behavior → filters out non-matches, so count either stays same or decreases

Change dimension nuance:

Relationship

Impact

Example

1:1 (Customer ↔ Account)

Count stays same

100 customers → 100 accounts

1:N (Customer → Orders)

Count increases

100 customers → 350 orders

N:1 (Orders → Fulfillment)

Count decreases

350 orders → 120 fulfillments

 

 

Activity

Grain Change?

Dimension Change?

Join Type

Record Count Impact

Key Behavior

Reconciliation

No

No

Inner Join

May decrease

Validates matching records; filters non-matches

Enrichment

No

No

Full Outer Join

Unchanged

Adds attributes; stays at source grain

Change Dimension

Yes

Yes

Right Join

Variable

Pivots entire population; cardinality shifts

 

Translate
Thanks, Sathees
Level 2
October 8, 2026

HI ​@SatheeskannaK,

Thanks for your answers. Based out of adobe consulting convos, here is where I am.

Grain or Working table or Targeting dimension is always same expect when we create a data model unconventionally like, customer dimension with multiple order rows for each customer making order as grain.

 

Activity

Grain Change?

Dimension Change?

Join Type

Record Count Impact

Key Behavior

Reconciliation

Yes

Yes

Inner join/left outer join(Toggle for unmatched rows)

May Stays Same/Increase

The grain changes to the reconciliation table.

Enrichment

No

No

Left Join

Unchanged

Adds attributes; stays at source grain

Change Dimension

Yes

Yes

Pending

Pending Pending


Will update future findings here as I learn more.

Translate