public function prepareDimension(MetaModel $metamodel, DatasetMetaData $dataset, $columnName, CubeMetaData $cube) { $column = $dataset->getColumn($columnName); $sourceDatasetColumn = $cube->sourceDataset->getColumn($columnName); $dimension = $cube->getDimension($columnName); $this->prepareYearLevel($dimension, $column); // cube source dataset column contains a reference to year identifier $sourceDatasetColumn->initializeTypeFrom(Sequence::getSequenceColumnType()); // adding a reference to date dataset $referenceName = DateDimensionDatasetNames::LEVEL_YEARS; $metamodel->registerSimpleReferencePoint($referenceName, DateDimensionDatasetNames::LEVEL_YEARS, 'year_id'); $metamodel->registerSimpleReferencePoint($referenceName, $cube->sourceDatasetName, $columnName); }
public function prepareDimension(MetaModel $metamodel, DatasetMetaData $dataset, $columnName, CubeMetaData $cube) { $logicalColumn = $dataset->getColumn($columnName); $column = $cube->factsDataset->getColumn($columnName); $dimension = $cube->getDimension($columnName); // preparing the dimension properties $dimension->attributeColumnName = $columnName; $dimension->setDatasetName(StarSchemaNamingConvention::getAttributeRelatedName($dataset->name, $columnName)); // preparing dimension dataset $dimension->dataset = new DatasetMetaData(); $dimension->dataset->name = $dimension->datasetName; $dimension->dataset->publicName = $dataset->publicName . " [$logicalColumn->publicName]"; $dimension->dataset->description = t("Lookup table to store unique values from '@columnName' column", array('@columnName' => $logicalColumn->publicName)); $dimension->dataset->datasourceName = $dataset->datasourceName; $dimension->dataset->source = StarSchemaNamingConvention::getAttributeRelatedName($dataset->source, $columnName); $dimension->dataset->markAsPrivate(); // adding dimension dataset aliases if (isset($dataset->aliases)) { foreach ($dataset->aliases as $alias) { $dimension->dataset->aliases[] = StarSchemaNamingConvention::getAttributeRelatedName($alias, $columnName); } } // adding key column $keyColumn = $dimension->dataset->registerColumn($columnName); $keyColumn->publicName = $logicalColumn->publicName; $keyColumn->description = t("System generated ID to identify each unique value from '@columnName' column", array('@columnName' => $logicalColumn->publicName)); $keyColumn->initializeTypeFrom(Sequence::getSequenceColumnType()); $keyColumn->key = TRUE; $keyColumn->visible = FALSE; // adding 'value' column $valueColumn = $dimension->dataset->registerColumn('value'); $valueColumn->publicName = $logicalColumn->publicName; $valueColumn->description = t("Actual value from '@columnName' column", array('@columnName' => $logicalColumn->publicName)); $valueColumn->initializeTypeFrom($logicalColumn->type); // facts dataset column contains a reference to lookup $column->initializeTypeFrom(Sequence::getSequenceColumnType()); $column->type->logicalApplicationType = StringDataTypeHandler::DATA_TYPE; // marking that the dimension dataset object contains complete meta data & registering it in meta model $dimension->dataset->markAsComplete(); $metamodel->registerDataset($dimension->dataset); // adding a reference to the dimension dataset $referenceName = $dimension->datasetName; $metamodel->registerSimpleReferencePoint($referenceName, $dimension->datasetName, $columnName); $metamodel->registerSimpleReferencePoint($referenceName, $cube->factsDatasetName, $columnName); }
public function prepareDimension(MetaModel $metamodel, DatasetMetaData $dataset, $columnName, CubeMetaData $cube) { $column = $dataset->getColumn($columnName); $dimension = $cube->getDimension($columnName); $dimension->attributeColumnName = $column->name; }
protected function prepareCubeRequestQueries(CubeQueryRequest $request, CubeMetaData $cube, array $parameters = NULL) { if (!isset($parameters)) { return; } $metamodel = data_controller_get_metamodel(); foreach ($parameters as $parameterName => $parameterValues) { list($elementName, $subElementName, $propertyName) = ParameterHelper::splitName($parameterName); list($referencedDatasetName, $referencedElementName) = ReferencePathHelper::splitReference($elementName); // checking that referenced cube exists $referencedCube = isset($referencedDatasetName) ? $metamodel->getCubeByDatasetName($referencedDatasetName) : NULL; if (isset($subElementName)) { if (isset($referencedCube)) { throw new IllegalArgumentException(t('Referenced dimensions are not supported')); } // checking the level exists $dimension = $cube->getDimension($elementName); $level = $dimension->getLevel($subElementName); // adding the dimension level related query $request->addDimensionLevelPropertyQueryValues($elementName, $subElementName, $propertyName, $parameterValues); } else { $selectedRequest = $request; if (isset($referencedCube)) { $measure = $referencedCube->findMeasure($referencedElementName); $selectedRequest = $request->registerReferencedRequest($referencedCube->name); } else { // checking if the measure exists $measure = $cube->findMeasure($referencedElementName); } if (isset($measure)) { // adding measure query $selectedRequest->addMeasureQueryValues($referencedElementName, $parameterValues); } else { // adding dataset column-based query $selectedRequest->addSourceDatasetPropertyQueryValues($referencedElementName, $parameterValues); } } } }
public static function disableByColumn(CubeMetaData $cube, DatasetMetaData $dataset, $columnName) { $column = $dataset->getColumn($columnName); $cube->getDimension($columnName)->used = FALSE; if (self::containsCategory($column, self::FACT)) { self::disableFactMeasure($cube, $columnName, 'AVG'); self::disableFactMeasure($cube, $columnName, 'MIN'); self::disableFactMeasure($cube, $columnName, 'MAX'); self::disableFactMeasure($cube, $columnName, 'SUM'); } }
public function prepareDimension(MetaModel $metamodel, DatasetMetaData $dataset, $columnName, CubeMetaData $cube) { $column = $cube->factsDataset->getColumn($columnName); $dimension = $cube->getDimension($columnName); $referencedCube = $metamodel->findCube($this->datasetName); // TODO DHS Management Cube (we do not have cubes for lookups) $referencedDatasetName = isset($referencedCube) ? $referencedCube->factsDatasetName : $this->datasetName; // preparing dimension properties $dimension->attributeColumnName = $columnName; // preparing dimension dataset $dimension->setDatasetName($this->datasetName); $dimension->dataset = $metamodel->getDataset($dimension->datasetName); // facts dataset column contains a reference to lookup // TODO DHS Management Cube (column type has been already prepared) if (!isset($column->type->applicationType)) { $column->initializeTypeFrom(Sequence::getSequenceColumnType()); } // adding a reference to dimension dataset $referenceName = $referencedDatasetName; $metamodel->registerSimpleReferencePoint($referenceName, $referencedDatasetName, NULL); $metamodel->registerSimpleReferencePoint($referenceName, $cube->factsDatasetName, $columnName); // ... to support retrieving properties of the dimension dataset $metamodel->registerSimpleReferencePoint($referenceName, $dimension->datasetName, $dimension->dataset->getKeyColumn()->name); }