FRAMES | NO FRAMES |
Compares a target profile to a base profile.
Availability: Business Analyst Server.
TaskResultOutput ProfileComparisonChart ( ProfileComparisonChartParameters Parameters, esriReportFormat ReportFormat, TaskOutputType[] OutputTypes, esriFolderItem OutputReportItem );
Parameter | Description |
---|---|
Parameters | Configuration options for analysis. Type ProfileComparisonChartParameters. |
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. |
Variable of type TaskResultOutput
Segmentation Charts graphically display values for each Tapestry segment when comparing two or more profiles. These charts are used to illustrate the values in a Customer Tapestry Profile Report.
The ProfileComparisonChart method compares a target profile to a base profile and creates the bar chart.
A sample profile comparison bar chart is illustrated below. The y-axis contains a bar for each of the Tapestry segments, and the x-axis is scale dependent on the index values of a profile comparison.
Each bar within the chart displays three distinct pieces of information:
The example below generates a Profile Comparison Chart from a target profile derived from a list of customers and a base profile derived from a sales territory. 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_ProfileComparisonChart"; 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_ProfileComparisonChart"; 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 ProfileComparisonChartParameters parameters = new ProfileComparisonChartParameters(); // 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.ProfileComparisonChart(parameters, outputReport); string reportURL = result.Reports[0].ReportURL; |