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);
 }