FRAMES | NO FRAMES
CoreDevelopSegments Method

Displays core and developmental segments in a table with customer count and percent, market area count and percent, and index.

Availability: Business Analyst Server.

TaskResultOutput CoreDevelopSegments ( 
    CoreDevelopSegmentsParameters  Parameters, 
    TaskOutputType[]               OutputTypes, 
    esriReportFormat               ReportFormat, 
    esriFolderItem                 OutputReportItem 
);

Parameter Description
Parameters Configuration options for analysis. Type CoreDevelopSegmentsParameters.
OutputTypes Array of task output options. Options for this method include creating a report (GetReport). Type TaskOutputType[].
ReportFormat This parameter should be null. This parameter is deprecated.
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

By using the Customer Tapestry Profile, you can identify your target customers using a combination of two factors: index and percent of customers. These two factors, in different combinations, can define your core and developmental target groups. With the CoreDevelopSegments method, you can set these two values using index threshold and percent threshold.

Core customer segments

Customer segments with a high percentage of your customer base are indicators of your core segments. Core segments are the segments that not only make up a large percentage of your customer base but also have an above-average index to be a customer. Customers in this segment make up a larger percentage of your customer base than that of the market area. These segments represent loyalty and good opportunity. In the table below, the core segments are identified. These segments contain at least 4 percent of the customer base and have an index greater than 175.

Developmental segments

Developmental segments are the segments that also make up a significant percent of total customers (more than 4 percent) but do not have an index above 175. Developmental segments are important because they represent a significant portion of the customers and also represent areas with households that have not been reached as effectively by your business. They represent potential for loyal customers. The table below illustrates what these segments may look like.

Usage Tips

Examples

The example below illustrates a workflow to create a Core and Developmental Segments Report from a target profile derived from a tables of customers with sales data and a base profile generated from a sales trade area. Also, both profiles are stored in the repository.

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_CoreDevelopSegments";
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_CoreDevelopSegments";
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
 
CoreDevelopSegmentsParameters parameters = new CoreDevelopSegmentsParameters();
 
// Set specific analysis parameters
parameters.BaseProfile = baseProfileData;
parameters.IndexThreshold = 90;
parameters.PercentThreshold = 4;
parameters.TargetProfile = targetProfileData;
parameters.UseExistingTargetGroup = false;
 
// 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 = "Core and Dev Segments Report for customers table";
parameters.StandardReportOptions = reportOptions;
 
// Set other parameters
outputReport = null;
 
TaskResultOutput result = baServerHelper.CoreDevelopSegments(parameters, outputReport);
 
// Get the report URL
string reportURL = result.Reports[0].ReportURL;

See Also