Model Providers Reference¶
See also
Model Providers¶
-
class
cubes.
ModelProvider
(metadata=None)¶ Base class for model providers. Initializes a model provider and sets metadata – a model metadata dictionary.
Subclasses should call this method at the beginning of the custom __init__().
If a model provider subclass has a metadata that should be pre-pended to the user-provided metadta, it should return it in default_metadata().
Subclasses should implement at least:
cubes.ModelProvider.cube()
,cubes.ModelProvider.dimension()
andcubes.ModelProvider.list_cubes()
methods.-
bind
(store)¶ Set’s the provider’s store.
-
cube
(name, locale=None, namespace=None)¶ Returns a cube with name provided by the receiver. If receiver does not have the cube NoSuchCube exception is raised.
Note: The returned cube will not have the dimensions assigned. It is up to the caller’s responsibility to assign appropriate dimensions based on the cube’s dimension_links.
Subclasses of ModelProvider might override this method if they would like to create the Cube object directly.
-
cube_metadata
(name, locale=None)¶ Returns a cube metadata by combining model’s global metadata and cube’s metadata. Merged metadata dictionaries: browser_options, mappings, joins.
Subclasses should override this method and call the super if they would like to merge metadata provided in a model file.
-
cube_options
(cube_name)¶ Returns an options dictionary for cube name. The options dictoinary is merged model options metadata with cube’s options metadata if exists. Cube overrides model’s global (default) options.
-
default_metadata
(metadata=None)¶ Returns metadata that are prepended to the provided model metadata. metadata is user-provided metadata and might be used to decide what kind of default metadata are returned.
The metadata are merged as follows:
- cube lists are concatenated (no duplicity checking)
- dimension lists are concatenated (no duplicity checking)
- joins are concatenated
- default mappings are updated with the model’s mappings
Default implementation returns empty metadata.
-
dimension
(name, templates=[], locale=None)¶ Returns a dimension with name provided by the receiver. dimensions is a dictionary of dimension objects where the receiver can look for templates. If the dimension requires a template and the template is missing, the subclasses should raise TemplateRequired(template) error with a template name as an argument.
If the receiver does not provide the dimension NoSuchDimension exception is raised.
-
dimension_metadata
(name, locale=None)¶ Returns a metadata dictionary for dimension name and optional locale.
Subclasses should override this method and call the super if they would like to merge metadata provided in a model file.
-
has_cube
(name)¶ Returns True if the provider has cube name. Otherwise returns False.
-
initialize_from_store
()¶ This method is called after the provider’s store was set. Override this method if you would like to perform post-initialization from the store.
-
list_cubes
()¶ Get a list of metadata for cubes in the workspace. Result is a list of dictionaries with keys: name, label, category, info.
The list is fetched from the model providers on the call of this method.
Subclassees should implement this method.
-
requires_store
()¶ Return True if the provider requires a store. Subclasses might override this method. Default implementation returns False
-
Model Metadata¶
-
cubes.
read_model_metadata
(source)¶ Reads a model description from source which can be a filename, URL, file-like object or a path to a directory. Returns a model description dictionary.
-
cubes.
read_model_metadata_bundle
(path)¶ Load logical model a directory specified by path. Returns a model description dictionary. Model directory bundle has structure:
model.cubesmodel/
model.json
dim_*.json
cube_*.json
The dimensions and cubes lists in the
model.json
are concatenated with dimensions and cubes from the separate files.
-
cubes.
write_model_metadata_bundle
(path, metadata, replace=False)¶ Writes a model metadata bundle into new directory target from metadata. Directory should not exist.
-
cubes.
expand_cube_metadata
(metadata)¶ Expands metadata to be as complete as possible cube metadata. metadata should be a dictionary.
-
cubes.
expand_dimension_links
(metadata)¶ Expands links to dimensions. metadata should be a list of strings or dictionaries (might be mixed). Returns a list of dictionaries with at least one key name. Other keys are: hierarchies, default_hierarchy_name, nonadditive, cardinality, template
-
cubes.
expand_dimension_metadata
(metadata, expand_levels=False)¶ Expands metadata to be as complete as possible dimension metadata. If expand_levels is True then levels metadata are expanded as well.
-
cubes.
expand_level_metadata
(metadata)¶ Returns a level description as a dictionary. If provided as string, then it is going to be used as level name and as its only attribute. If a dictionary is provided and has no attributes, then level will contain only attribute with the same name as the level name.
-
cubes.
expand_attribute_metadata
(metadata)¶ Fixes metadata of an attribute. If metadata is a string it will be converted into a dictionary with key “name” set to the string value.