protected function prepareAttributeDistinctCountMeasure(__CubeUIMetaDataGenerator_CallContext $callcontext, AbstractRootElementUIMetaData $attributeUIMetaData, $referencePath, CubeMetaData $cube, ColumnMetaData $column, $attributeName) { $measureName = StarSchemaNamingConvention::getAttributeRelatedMeasureName( $attributeName, StarSchemaNamingConvention::$MEASURE_NAME_SUFFIX__DISTINCT_COUNT); // the measure has been used already if (!isset($callcontext->usedMeasureNames[$measureName]) || $callcontext->usedMeasureNames[$measureName]) { return; } $measure = $cube->findMeasure($measureName); if (!isset($measure)) { return; } $measureUIMetaData = new AttributeMeasureUIMetaData(); $measureUIMetaData->name = self::prepareMeasureUIMetaDataName($referencePath, $cube, $measureName); $measureUIMetaData->publicName = $column->publicName; $measureUIMetaData->description = $measure->description; $measureUIMetaData->type = clone $measure->type; $attributeUIMetaData->registerElement($measureUIMetaData); // marking that the measure is used by this attribute $callcontext->usedMeasureNames[$measureName] = TRUE; }
public static function deinitializeByColumn(CubeMetaData $cube, DatasetMetaData $dataset, $columnName) { $metamodel = data_controller_get_metamodel(); $column = $dataset->getColumn($columnName); $handler = DimensionLookupFactory::getInstance()->getHandler($column->type->getLogicalApplicationType()); $handler->unprepareDimension($metamodel, $dataset, $column->name); // removing dimension $dimension = $cube->unregisterDimension($columnName); // removing measure which counts unique values $attributeName = ParameterNameHelper::assemble($dimension->name); $measureName = StarSchemaNamingConvention::getAttributeRelatedMeasureName($attributeName, StarSchemaNamingConvention::$MEASURE_NAME_SUFFIX__DISTINCT_COUNT); $measure = $cube->findMeasure($measureName); if (isset($measure)) { $cube->unregisterMeasure($measureName); } self::deinitializeColumnMeasures($cube, $dataset, $columnName); }