FRAMES | NO FRAMES
UnderstandingTargetCustomers Method

Creates a report to compare the Tapestry profile of your core and developmental customers to the Tapestry profile of a syndicated survey.

Availability: Business Analyst Server.

TaskResultOutput UnderstandingTargetCustomers ( 
    UnderstandingTargetCustomersParameters  Parameters, 
    esriReportFormat                        ReportFormat, 
    TaskOutputType[]                        OutputTypes, 
    esriFolderItem                          OutputReportItem 
);

Parameter Description
Parameters Configuration options for analysis. Type UnderstandingTargetCustomersParameters.
ReportFormat This parameter should be null. This parameter is deprecated.
OutputTypes Array of task output options. Options for this method include creating a report (GetReport). Type TaskOutputType[].
OutputReportItem (Optional parameter — can be null).
Configuration options for storing the output report in the repository. This will enable viewing and working with the output result in subsequent tasks. Type esriFolderItem.

Returns

Variable of type TaskResultOutput

Remarks

After you have defined your target segments, you can use the Mediamark Research, Inc. (MRI), Segmentation Report to understand them. The Core and Developmental Segments Report identified two distinct groups of segments, and you'll need to understand more about the similarities and differences between the lifestyles of these groups. Using the Tapestry profile of your customers, the MRI Segmentation Report calculates a weighted index that takes into account the percent composition for each segment of your customer profile as compared to the index for that segment for any specific product, service, or lifestyle characteristic. Using this method, you can compare the Tapestry profile of your customers to the Tapestry profile based on a syndicated customer survey conducted by MRI. MRI conducts surveys that show how individuals purchase and use various products and services. If the index is above 100, your customers are more likely to purchase or use the product or service or have the lifestyle characteristic than the average household in the base profile.

This method creates a report containing one table per a MRI group specified. Every table provides indexes for the top 20 characteristics of its MRI group sorted from high to low for Core index.

Usage Tips

How Does it Work

Now that you have identified your target customers, you need to understand them. Specifying the index and percent composition threshold, you have identified two distinct groups of segments (core and developmental) and need to understand more about the similarities and differences between the lifestyles of these groups. An insightful function for analyzing your customers is the Index. Using the Customer Tapestry Profile of your core and developmental customers, you can calculate a weighted index that takes into account the percent composition for each segment of your target customer profile and use this to weight the index for that segment for all characteristics for the leisure, sports, and travel categories.

This weighted index allows you to identify the MRI category items that are most highly indexed to your target segments.

The weighted index is calculated by multiplying the % of Core for each Tapestry segment that makes up the Core Segments times the associated Market Potential Index (MPI) for each Tapestry segment in the national Tapestry profile of the MRI item.

For example, the Customer Count is the number of customers in each segment and the % of Core is the percent that each segment makes up of the total core target segment customers (see table below).

Multiply the % of Core above and the associated MPI index for each segment above and sum across all Core Segments.

This creates an overall index for an MPI item weighted based on the Tapestry makeup of your core target segments (in this case 174). If your target contains segments that index above average for a specific MPI item, then the weighted index will be above average; if the target contains segments that index below average for a specific MPI item, then the weighted index will be below average. This calculation is performed for every item of the MPI category selected, and the resulting weighted indices are sorted from high to low for the Core.

The same calculations are then performed for all the developmental segments.

Examples

The example below generates an Understanding Target Customers report from a target customer profile derived from a table of customers and the sales associated with them and a base profile derived from a sales trade area. The report is generated for four Mediamark Research, Inc. (MRI) groups. Also, both profiles are stored in the repository.

Use the GetMRIGroups lookup operation to query available MRI groups.

C#
// Instantiate the BAServerHelper class to access analysis methods
BAServerHelper baServerHelper = new BAServerHelper();
baServerHelper.ActiveDatasetID = "USA_ESRI"; // Optional parameter
baServerHelper.IsFullErrorMessage = true;    // Default is false
 
// You can specify below a domain of your local Business Analyst Server.
//baServerHelper.BAServerDomain = "esri.com";
 
// If a domain name is specified, a local server name in output URLs is replaced with the
// fully-addressable server name so people and machines outside the domain of your local
// Business Analyst Server instance can access these URLs.
 
RenderingParameters imageOptions;
TaskOutputType[] outputOptions;
esriFolderItem outputLayer;
esriFolderItem outputReport;
esriFolderItem outputItem;
 
// ========= STEP 1: Create a target segmentation profile by the table of customers
 
RecordSet table = new RecordSet();
 
// Create table fields
string[] fieldNames = new string[] {
    "CUST_ID", "NAME", "ADDRESS", "CITY", "STATE", "ZIP", "STORE_ID", "SALES"
};
table.Fields = new Fields();
table.Fields.FieldArray = new Field[fieldNames.Length];
for (int i = 0; i < fieldNames.Length; i++)
{
    Field field = new Field();
    field.Name = fieldNames[i];
    field.Type = esriFieldType.esriFieldTypeString;
    table.Fields.FieldArray[i] = field;
}
// The last field is numeric
table.Fields.FieldArray[fieldNames.Length - 1].Type = esriFieldType.esriFieldTypeInteger;
 
// Create table records
table.Records = new Record[5];
table.Records[0] = new Record();
table.Records[0].Values = new object[] {
    "101", "CUST1", "2355 Pine St.", "San Francisco", "CA", "94115", "1", 12343
};
table.Records[1] = new Record();
table.Records[1].Values = new object[] {
    "102", "CUST2", "2501 California St.", "San Francisco", "CA", "94115", "1", 10008
};
table.Records[2] = new Record();
table.Records[2].Values = new object[] {
    "103", "CUST3", "563 Ruger St.", "San Francisco", "CA", "94129", "2", 3200
};
table.Records[3] = new Record();
table.Records[3].Values = new object[] {
    "104", "CUST4", "301 Finley Rd.", "San Francisco", "CA", "94129", "2", 15802
};
table.Records[4] = new Record();
table.Records[4].Values = new object[] {
    "105", "CUST5", "614 Balboa St.", "San Francisco", "CA", "94129", "2", 4750
};
 
TableData tableData = new TableData();
tableData.RecordSet = table;
 
// Specify geocode data
GeocodeData geocodeData = new GeocodeData();
geocodeData.Table = tableData;
 
ProfileByTableGeocodingParameters targetProfileParameters = new ProfileByTableGeocodingParameters();
 
// Set specific analysis parameters
targetProfileParameters.GeocodeData = geocodeData;
targetProfileParameters.SegmentationBase = "Total Households";
targetProfileParameters.WeightField = "SALES";
 
// Set other parameters
// In general, a non-null esriFolderItem is specified to save a newly-created
// item to the server-side repository or to reference an existing item in it.
outputItem = new esriFolderItem();
outputItem.folderType = esriFolderType.esriFolderSegProfiles;
outputItem.itemName = "targetProfile_UnderstandingTargetCustomers";
outputItem.projectName = "Default Project";
outputItem.workspaceName = "Default Workspace";
 
string targetProfile = baServerHelper.ProfileByTableGeocoding(targetProfileParameters, outputItem);
 
ProfileData targetProfileData = new ProfileData();
targetProfileData.Description = targetProfile;
 
// ========= STEP 2: Create a boundary layer from standard geographies
 
// The San Francisco County study area is selected as the boundary
StandardLevelsOfGeographyParameters geographyParameters = new StandardLevelsOfGeographyParameters();
 
// Set specific analysis parameters
geographyParameters.GeographyFeaturesBehavior = esriStdGeographyType.esriStdGeographyTypeFirst;
geographyParameters.GeographyIDs = new string[] { "06075" }; // FIPS ID code for San Francisco County
geographyParameters.GeographyLevelID = "US.Counties";
 
// Set other parameters
imageOptions = null;
outputOptions = new TaskOutputType[] { TaskOutputType.GetFeatureClass };
outputLayer = null;
outputReport = null;
 
TaskResultOutput geographyResult =
    baServerHelper.StandardLevelsOfGeography(geographyParameters, imageOptions, outputOptions, outputLayer, outputReport);
 
DataLayer boundaryLayer = new DataLayer();
boundaryLayer.RecordSet = geographyResult.RecordSet;
 
// ========= STEP 3: Create a base segmentation profile by the boundary layer
 
ProfileByAreaSummationParameters baseProfileParameters = new ProfileByAreaSummationParameters();
 
// Set specific analysis parameters
baseProfileParameters.AreaIDField = "AREA_ID";
baseProfileParameters.Boundaries = boundaryLayer;
baseProfileParameters.SegmentationBase = "Total Households";
 
// Set other parameters
// In general, a non-null esriFolderItem is specified to save a newly-created
// item to the server-side repository or to reference an existing item in it.
outputItem = new esriFolderItem();
outputItem.folderType = esriFolderType.esriFolderSegProfiles;
outputItem.itemName = "baseProfile_UnderstandingTargetCustomers";
outputItem.projectName = "Default Project";
outputItem.workspaceName = "Default Workspace";
 
string baseProfile = baServerHelper.ProfileByAreaSummation(baseProfileParameters, outputItem);
 
ProfileData baseProfileData = new ProfileData();
baseProfileData.Description = baseProfile;
 
// ========= STEP 4: Execute the analysis
 
UnderstandingTargetCustomersParameters parameters = new UnderstandingTargetCustomersParameters();
 
// Set specific analysis parameters
parameters.BaseProfile = baseProfileData;
parameters.CustomerDescription = "Top Rung and Connoisseurs";
parameters.IndexThreshold = 200;
parameters.MRIGroups = new string[] { "Attitudes", "Financial", "Shopping", "Travel" };
parameters.PercentThreshold = 10;
parameters.TargetProfile = targetProfileData;
parameters.ReportTemplateType = esriMRIReportType.esriMRIReportTypeMarketingStrategies;
 
// Set report options
ReportOptions reportOptions = new ReportOptions();
reportOptions.ReportFormat = "PDF";
reportOptions.ReportHeader = new KeyValue[1];
reportOptions.ReportHeader[0] = new KeyValue();
reportOptions.ReportHeader[0].Key = "subtitle";
reportOptions.ReportHeader[0].Value = "Understanding Target Customers Report for customers table";
parameters.StandardReportOptions = reportOptions;
 
// Set other parameters
outputReport = null;
 
TaskResultOutput result = baServerHelper.UnderstandingTargetCustomers(parameters, outputReport);
 
string reportURL = result.Reports[0].ReportURL;

See Also