FRAMES | NO FRAMES
TapestryProfileReport Method

Creates the Tapestry Profile Report based on comparison your customer target segmentation profile to a base segmentation profile.

Availability: Business Analyst Server.

TaskResultOutput TapestryProfileReport ( 
    TapestryProfileReportParameters  Parameters, 
    esriReportFormat                 ReportFormat, 
    TaskOutputType[]                 OutputTypes, 
    esriFolderItem                   OutputReportItem 
); 

Parameter Description
Parameters Configuration options for analysis. Type TapestryProfileReportParameters.
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

The Tapestry Profile Report shows the Tapestry segments and summary groups that most accurately reflect your customer records and compares your customer target segmentation profile to a base segmentation profile. The report is based on the number of customer records analyzed.

The Customer Tapestry Profile by Summary Group and Customer Tapestry Profile by Segment tables display the count, percent, and index of each summary group or segment for your customer profile and for the base profile. The Customer column notes the actual count of customers in each summary group or segment and the percentage of customers in the summary group or segment to the total number of customer records. The Penetration per 100 illustrates the penetration percentage per 100 customers in the summary group or segment. The last three columns—Number, Percent, and Index—show the households, percent of total households, and index of each summary group or segment in the base profile. The index average is 100. A segment with an index of 216 means that these households are 2.16 times more likely to be a customer than the average household.

The Customer Tapestry Profile by Segment table is sorted by customer percentage from highest to lowest. By sorting on customer percentage, you can see which segments make up your current customers. This report helps you answer the questions Who are my customers? and Who are my target (best) customers?.

The illustration below is an example of a Customer Tapestry Profile Report. There are annotation callout bubbles that highlight how each value is calculated.

Usage Tips

Examples

The example below generates a customer market tapestry profile report based on a target profile derived from a list of customers and sales and, a base profile derived 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_TapestryProfileReport";
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_TapestryProfileReport";
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
 
TapestryProfileReportParameters parameters = new TapestryProfileReportParameters();
 
// Set specific analysis parameters
parameters.BaseProfile = baseProfileData;
parameters.TargetProfile = targetProfileData;
 
// 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 = "Profile Comparison Chart for customers table";
parameters.StandardReportOptions = reportOptions;
 
// Set other parameters
outputReport = null;
 
TaskResultOutput result = baServerHelper.TapestryProfileReport(parameters, outputReport);
 
string reportURL = result.Reports[0].ReportURL;

See Also