---
schema_version: "1"
id: 2adf37434182ab3f29340616acfdd94a27371b00d1a25afe80e872140c81e1d8
title: Enable Null Measure Handling in Orgs Created Before Spring ’17
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_integrate_enable_null_measures.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_enable_null_measures.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 8e8e9c075c9b5b24e68eebc243e376f01e7108e08d447528389036ff082a77ef
description: Use null measure handling to specify null as the default value for numeric columns in your recipes, dataflows, and CSV uploads. When another default value isn’t specified for a numeric column and null measure handling is enabled, CRM Analytics replaces a blank with a null value. If CRM Analytics was initially set up in your org after the Spring ’17 release, null measure handling is enabled and you can’t disable it.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# Enable Null Measure Handling in Orgs Created Before Spring ’17

Use null measure handling to specify null as the default value for numeric columns in your recipes, dataflows, and CSV uploads. When another default value isn’t specified for a numeric column and null measure handling is enabled, CRM Analytics replaces a blank with a null value. If CRM Analytics was initially set up in your org after the Spring ’17 release, null measure handling is enabled and you can’t disable it.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d171536e25">User Permissions
              Needed</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d171536e25 ">To enable null measure handling:</td>
            <td class="slds-cell-wrap" style="vertical-align:top;" headers="d171536e25 ">Customize Application</td>
          </tr>
        </tbody>
      </table>

If CRM Analytics was initially set up in your org before Spring ’17, contact Salesforce Customer Support.

After Salesforce makes null measure handling available in your org, you can enable it from Setup. In the Quick Find box, enter Analytics, and select **Settings**. Select **Allow null measure handling in datasets**, and then click **Save**.

If you’ve used zeros to replace blank values, you might need to perform additional steps because null measure handling can’t retroactively change zeros to nulls.

After enabling null measure handling, review your dataflows and take these steps as needed.

1. Update your dataflow definition files to use null instead of 0 in the `defaultValue` attributes for measure fields in these transformations.
    
    <table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small "><colgroup><col style="width:15.503875968992247%"> <col style="width:84.49612403100775%"></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">computeExpression</td><td class="slds-cell-wrap" style="vertical-align:top;"><code>defaultValue: "null"</code></td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">computeRelative</td><td class="slds-cell-wrap" style="vertical-align:top;"><code>defaultValue: "null"</code></td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">dim2mea</td><td class="slds-cell-wrap" style="vertical-align:top;"><code>measureDefault: "null"</code></td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">sfdcDigest</td><td class="slds-cell-wrap" style="vertical-align:top;"><code>defaultValue: "null"</code></td></tr></tbody></table>
2. Create instances of long-lived datasets used as a source for dataflows using a null `defaultValue` for measure fields.
    
    A long-lived dataset is typically a reference dataset that isn’t updated through a dataflow and is used to augment data in other datasets. For example, you could use a geolocation dataset to augment lead information based on ZIP codes.
3. If you have incrementally built datasets in which the source data is no longer available, use a custom dataflow to manually convert 0 values to null.
    
    An incrementally built dataset is created over time by appending rows, such as logs.
4. Reimplement `delta` transformations in your dataflows using `computeRelative` and `computeExpression` transformations. The `delta` transformation isn’t supported when null measure handling is enabled. Dataflows containing delta transformations fail.
    
    In this example, the `delta` transformation calculates the difference between an opportunity amount and its previous amount. The `computeRelative` and `computeExpression` transformations calculate the previous amount and its difference to the current amount, respectively.<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="d171536e136"><code>delta</code>
                  Transformation</th>
                <th scope="col" class="slds-cell-wrap" style="text-align:center;vertical-align:top;" id="d171536e140"><code>computeRelative</code> and
                  <code>computeExpression</code> Transformations
                </th>
              </tr>
            </thead>
            <tbody>
              <tr class="">
                <td data-label="delta Transformation" class="slds-cell-wrap" style="vertical-align:top;" headers="d171536e136 ">
                  <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>"Calculate_Delta": {
      "action": "delta",
      "parameters": {
         "dimension": "OpportunityId",
         "epoch": "CreatedDate_day_epoch",
         "inputMeasure": "Amount",
         "outputMeasure": "DeltaAmount",
         "source": "Extract_Opportunity_History"
      }
   },</code></pre>
                </td>
                <td data-label="computeRelative and computeExpression Transformations" class="slds-cell-wrap" style="vertical-align:top;" headers="d171536e140 ">
                  <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>"Compute_Previous": {
    "action": "computeRelative",
    "parameters": {
      "partitionBy": [
        "OpportunityId"
      ],
      "orderBy": [
        {
          "name": "CreatedDate",
          "direction": "asc"
        }
      ],
      "computedFields": [
        {
          "name": "PrevAmount",
          "expression": {
            "sourceField": "Amount",
            "offset": "previous()",
            "default": "current()"
          }
        }
      ],
      "source": "Extract_Opportunity_History"
    }
  },
"Compute_Delta": {
    "action": "computeExpression",
    "parameters": {
      "computedFields": [
        {
          "name": "DeltaAmount",
          "type": "Numeric",
          "precision": 18,
          "defaultValue": 0,
          "scale": 2,
          "saqlExpression": "Amount - PrevAmount"
        }
      ],
      "source": "Compute_Previous"
    }
  },</code></pre>
                </td>
              </tr>
            </tbody>
          </table>

#### See Also

- [computeRelative Transformation](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_computerelative_transformation.htm&release=264.0.0&type=5 "You can use the computeRelative transformation to analyze trends in your data by adding derived fields to a dataset based on values in other rows. For example, to analyze sales pipeline trends, create derived fields that calculate the number of days an opportunity remains in each stage. You can also calculate the changes to the opportunity amount throughout the stages of the opportunity.")
- [computeExpression Transformation](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_saql_transformation.htm&release=264.0.0&type=5 "The computeExpression transformation enables you to add derived fields to a dataset. The values for derived fields aren’t extracted from the input data source. Instead, CRM Analytics generates the values using a SAQL expression, which can be based on one or more fields from the input data or other derived fields. For example, you can use an expression to assign a value to a field, concatenate text fields, or perform mathematical calculations on numeric fields.")