Работа с измерением источника данных аналитической панели

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере выполняется работа с источником данных аналитической панели и его контейнером. После его запуска выполняются следующие операции:

Исходный код

Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Отображение аналитической панели») следующий код:

-(void)executeExample {
    // Получаем контейнер измерений источника данных
    SPPLDashboardDataSourceDimensionObjects dimensionObjects1 =
    m_dashboardReport->dataSourceDimensionObjects();
    if (dimensionObjects1 != NULL) {
        // Создаём справочник с настройками контейнера измерения источника данных
        SNMutableArray objectDescriptions = dimensionObjects1->generatePlist()->qClass<NMutableArray>();
        if (objectDescriptions->count() > 0) {
            // Получаем первое измерение источника данных
            SPPLDashboardDataSourceDimensionObject dimensionObject1 =
            [self getDimensionObjectFromObjects: objectDescriptions ByIndex:0];
            
            // Создаём справочник с настройками измерений источника данных
            SNMutableDictionary plist1 = dimensionObject1->generatePlist()->qClass<NMutableDictionary>();
            // Устанавливаем для первого измерения источника данных новое значение идентификатора
            plist1->setObjectForKey(NNumber::numberWithInt(5), NStr("changeCounter"));
            
            // Создаём на основе справочника второй объект источника данных
            SPPLDashboardDataSourceDimensionObject dimensionObject2 =
            PPLDashboardDataSourceDimensionObject::dimensionObject(plist1, m_dashboardReport->dataSourceObjects());
            // Выводим информацию о данном измерении
            [self showDimensionObjectInfo: dimensionObject2];
        }
    }
}
// Возвращает измерение источника данных по индексу
-(SPPLDashboardDataSourceDimensionObject) getDimensionObjectFromObjects: (SNArray)objectDescriptions
ByIndex: (int) index {
    // Получаем измерения источника данных
    SPPLDashboardDataSourceDimensionObjects dimensionObjects =
    PPLDashboardDataSourceDimensionObjects::dimensionObjects(
    objectDescriptions,
    m_dashboardReport->dataSourceObjects());
    // Получаем измерение источника данных по индексу
    SNString dimensionObjectId = dimensionObjects->objects()->objectAtIndex(index)->qClass<PPLDashboardDataSourceDimensionObject>()->dashboardRelatedId();
    SNString dataSourceObjectId = m_dashboardReport->dataSourceObjects()->objects()->
    objectAtIndex(index)->qClass<PPLDashboardDataSourceObject>()->dashboardRelatedId();
    return dimensionObjects->getDimensionObject(dimensionObjectId, dataSourceObjectId);
}
// Выводит информацию об измерении источника данных
-(void)showDimensionObjectInfo: (SPPLDashboardDataSourceDimensionObject) dimensionObject {
    printf("Идентификатор измерения в источнике данных: %s \n", dimensionObject->id()->UTF8String());
    printf("Ключ измерения в источнике данных: %lld \n", dimensionObject->key());
    printf("Наименование измерения в источнике данных: %s \n", dimensionObject->name()->UTF8String());
    printf("Количество изменений измерения в источнике данных: %lld \n", dimensionObject->changeCounter());
    printf("Идентификатор измерения источника данных в аналитической панели: %s \n",
    dimensionObject->dashboardRelatedId()->UTF8String());
    printf("Ключ измерения источника данных в аналитической панели: %lld \n",
    dimensionObject->dashboardRelatedKey());
    printf("Наименование измерения источника данных в аналитической панели: %s \n",
    dimensionObject->dashboardRelatedName()->UTF8String());
    // Проверяем измерение источника данных на уникальность
    if(dimensionObject->isOriginal()) {
        printf("Измерение источника данных является уникальным \n");
        } else {
        printf("Измерение источника данных не является уникальным \n");
    }
    // Получаем объект источника данных
    SPPLDashboardDataSourceObject dataSourceObject =
    dimensionObject->dataSourceObject();
    // Проверяем, связано ли измерение с объектом источника данных
    if(dimensionObject->isLinkedDSO()) {
        // Получаем связанный объект источника данных
        SPPLDashboardDataSourceObject dataSourceObject =
        dimensionObject->dataSourceObject();
        printf("Измерение связано с объектом источника данных %s \n", dataSourceObject->id()->UTF8String());
        } else {
        printf("Измерение не связано с объектом источника данных %s \n", dataSourceObject->id()->UTF8String());
    }
}

В результате выполнения примера в консоли среды разработки была выведена информация о первом измерении источника данных аналитической панели:

Идентификатор измерения в источнике данных: FACTS_98

Ключ измерения в источнике данных: 98

Наименование измерения в источнике данных: Факты

Количество изменений измерения в источнике данных: 5

Идентификатор измерения источника данных в аналитической панели: DIMITEM

Ключ измерения источника данных в аналитической панели: 1

Наименование измерения источника данных в аналитической панели: Факты

Измерение источника данных является уникальным

Измерение не связано с объектом источника данных OBJ9630

См. также:

Примеры использования библиотеки pplib++