Segments return no or zero members

Note

On September 1, 2023, we merged and renamed Dynamics 365 Marketing and Dynamics 365 Customer Insights. Dynamics 365 Marketing is now called Dynamics 365 Customer Insights - Journeys. Dynamics 365 Customer Insights is now called Dynamics 365 Customer Insights - Data. For more information, see Dynamics 365 Customer Insights FAQs.

This article provides a resolution for an issue where a segment doesn't return any members as expected.

Prerequisites

  • The segment refresh status is successful.
  • The segment is newly created or edited, or data import or unification rules or business definition of data have changed.

If the segment was previously successful and had members but is showing zero members and there has been no other change as specified above, please open a support ticket.

Symptoms

A segment runs and refreshes successfully but doesn't include any members.

Resolution

You can take the following steps to investigate the root cause and fix the issue.

Validate basic logic for contradictory conditions or rules

Contradictory AND conditions or rules on the same attribute always generate empty segments. For example, FirstName = Joe AND FirstName = Frank.

Review all the rules and conditions for broken logic. Consider more complex contradictions across multiple attributes too (this requires more knowledge of the dataset). For example, Status = 1 AND StatusDescription = Inactive, while a status value of 1 always means it's active.

The set operations (Union, Intersect, and Except are used to combine two rules) are applied on the CustomerId returned by each rule. So depending on the expected outcome, verify if the CustomerId is part (or not) of the result of each rule evaluation.

Break down complexity

When working with complex segments with multiple conditions or rules, reduce complexity and isolate the condition or rule responsible for the issue.

  • Start from the complete segment and remove conditions and rules one by one. Run the segment after each change until it returns members.
  • Build a new segment from scratch and add conditions and rules one by one from the segment that’s yielding no members. Run the segment after each step of adding conditions or rules until no members are returned anymore.

Missing data for the attribute(s) used in a segment rule or condition

If the value of the attribute used in a segment rule or condition is missing for any reason, the segment likely returns no members. Check if the expected value exists.

  • Explore table data and attribute values. If available, review the Summary column of the attributes you're interested in and ensure they aren't in a Missing or Error state.

    Note

    The summary isn't available for system-generated tables and optional for the tables imported from your own Azure Data Lake Storage.

  • Check if the source records aren't rejected for being corrupt.

  • Check if a specific value exists in the table for a given attribute. Create a measure for that table, filtered on the attribute value. Use the Count option to see how many records contain the value of the filtering condition. Use the First option on the primary key or foreign key to find a reference record.

  • To further explore the attribute values in the data, consider the following options:

    • Download the .csv file for a table on the table view to validate the first 100,000 records.

    • Use the Power BI connector to explore the entity in Power BI.

      Note

      All entities, especially source entities from an Azure Data Lake Storage data source, won't be available with this connector. It's also recommended to use it on tables with less than 1 million rows.

    • Export data to Azure in Azure Blob Storage, Azure Data Lake Storage, or Azure Synapse Analytics. Exports can help with further investigations using Synapse Analytics, Power BI, or any other data exploration tool.

    • For Power Query data sources, create a new data source or separate reference query in the existing data source with the filtering condition for the missing attribute. Once refreshed, check if the new table contains any data.

Issues with relationships between tables

If the relationship between the table used for segmentation and the unified customer table doesn't work due to the reasons stated below, the segment returns no members.

  • Check if the intended relationship path is used, as several paths could be technically valid between your source table (with a filtering condition on the attributes) and the Customer table. If there are several tables involved, inspect each relationship and validate if they're configured correctly with the right attributes.

  • The attribute value evaluation is case-sensitive. For example, two tables are related through a common attribute, MembershipType. If the attribute value is GOLD in one table and gold in the other, it will not yield a successful join and return no results. The same logic applies to GUIDs, which are easy to miss.

  • Verify that the data types of the attributes align across tables.

  • The deduplication process identifies a "winner" record during data unification. Measures and segments created with the deduplicated profile source table in the relationship path may use the "winner" record, leading to unexpected results.

Segment and measure evaluation happens by joining tables on the attributes defined in the relationships. For example, MembershipMaster has a relationship with the Contact table, with MembershipId and MembershipType attributes. The Contact table has a relationship with the Customer table, containing unified customer profiles over the attributes ContactId and ContactId (Source1_Contact). For details about the table relationship, see the screenshot below:

Screenshot shows a diagram example about the table relationship.

If the profile table (in this example, the Contact table) is deduplicated, then the evaluation happens through the "winner" record because of the relationship.

Screenshot shows sample data for the relationship diagram.

In this example, contact C1 (with "Gold" membership) and C2 (with "Silver" membership) have been unified with C2 being the winner. Hence, when a segment is created to identify the "Gold" members, "First Person" won't be part of the segment because the relationship path is evaluated only with C2.