Working with Pivot Object for Building Data Tables

Operating system requirements: iOS 5.0 or later.

Mobile device: iPad.

Description

This example implements working with a pivot object for building data tables and its headers. After starting the example the following operations are executed:

Source Code

Executing the example requires to place the following code in the body of the executeExample method of the ViewController class (see the Data Analysis section):

// Get pivot object for building data tables
SPPLPivot pivot = m_gridPivot;
// Get data matrix
SPPLDataSourceMatrix matrix = pivot->matrix();
// Get data matrix description
SNString matrixDescription = matrix->description();
// Display matrix description
printf("Data matrix description: %s\n", matrixDescription->UTF8String());
// Get data source
SPPLDataSource ds = pivot->dataSource();
// Set data aggregation
ds->setIsAggregate(true);
// Set data source
pivot->setDataSource(ds);
// Refresh pivot object for building data tables
pivot->refresh();
// Redraw chart
[chart setNeedsRedraw];
// Display whether data is aggregated
printf("Whether data is aggregated: ");
printf(ds->isAggregate() ? "true\n" : "false\n");
// Get dimension selection container
SPPLDimensionSelectionSet selectionSet = pivot->selectionSet();
// Get number of dimension selections
int selectionCount = selectionSet->selectionsCount();
// Get dimension selection
SPPLDimensionSelection selection = selectionSet->getSelectionByIndex(0);
// Get dimension
SPPLDimension dimension = selection->dimension();
// Remove selection by specified dimension
selectionSet->removeSelection(dimension->id());
// Set dimension selection container if number of selections is changed
if(selectionCount != selectionSet->selectionsCount())
    pivot->setSelectionSet(selectionSet);
// Get copy of header of pivot object for building data tables
SPPLPivotHeader originalHeader = pivot->topHeader();
SNID header = originalHeader->copy();
SPPLPivotHeader headerCopy = header->qClass<PPLPivotHeader>();
// Get header description
SNString description = headerCopy->description();
printf("Header copy description: %s\n", description->UTF8String());
// Create a header
PPLPivotHeader newHeader1 = PPLPivotHeader::PPLPivotHeader();
// Get title dimension array
SNArray h1DimArray = newHeader1.dimensions();
// Display number of array elements
if(h1DimArray != NULL)
    printf("Number of dimensions: %d\n", h1DimArray->count());
// Create a header for pivot object for building data tables
SPPLPivotHeader newHeader2 = PPLPivotHeader::pivotHeader(originalHeader->relatedPivot());
// Display created header description
printf("Description of created header: %s\n", newHeader2->description()->UTF8String());
// Get top header copy dimension
SPPLDimension dim1 = headerCopy->dimensions()[0]->qClass<PPLDimension>();
// Get left header dimension
SPPLDimension dim2 = pivot->leftHeader()->dimensions()[0]->qClass<PPLDimension>();
// Get fixed header dimension
SPPLDimension dim3 = pivot->fixedHeader()->dimensions()[0]->qClass<PPLDimension>();
// Add dimensions to header
headerCopy->putDimension(dim2);
headerCopy->putDimension(dim3);
// Move dimension up in header
headerCopy->moveUp(dim3);
// Move dimension down in header
headerCopy->moveDown(dim1);
// Display number of dimension in header
printf("Number of dimensions in header: %d\n", headerCopy->dimensions()->count());
// Remove all dimensions
headerCopy->removeAllDimensions();
// Display number of header dimensions after removal
printf("Dimensions are removed\n");
printf("Number of header dimensions: %d\n", headerCopy->dimensions()->count());
// Delete pivot object for building data tables
pivot->~PPLPivot();

After executing the example the development environment console displays information about the pivot object for building data tables and its headers:

Data matrix description: Matrix size: 1775

Whether data is aggregated: true

Header copy description: <NMutableArray:

id: CALENDAR_Y_ENG_533

name: Calendar

Elements tree:

Elements count: 11

>

Created header description: <NMutableArray:

>

Number of header dimensions: 3

Dimensions are removed

Number of header dimensions: 0

See also:

Example of pplib++ Library Use