diff --git a/README.md b/README.md index 4c4f7a1..f632727 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ ![logo](images/sml-logo-large.png) -# SML version 1.5 +# SML version 1.6 -This is documentation for SML spec version `1.5`. For earlier versions browse the repository tags. Examples: +This is documentation for SML spec version `1.6`. For earlier versions browse the repository tags. Examples: - [SML version 1.0](https://github.com/semanticdatalayer/SML/tree/v1.0) - [SML version 1.1](https://github.com/semanticdatalayer/SML/tree/v1.1) - [SML version 1.2](https://github.com/semanticdatalayer/SML/tree/v1.2) - [SML version 1.3](https://github.com/semanticdatalayer/SML/tree/v1.3) - [SML version 1.4](https://github.com/semanticdatalayer/SML/tree/v1.4) +- [SML version 1.5](https://github.com/semanticdatalayer/SML/tree/v1.5) # What is SML? diff --git a/sml-reference/catalog.md b/sml-reference/catalog.md index e3390f6..71f9f32 100644 --- a/sml-reference/catalog.md +++ b/sml-reference/catalog.md @@ -32,6 +32,7 @@ classDiagram Boolean build_speculative_aggs Object dataset_properties Array~String hidden_models + String description } ``` @@ -139,3 +140,15 @@ values you want to set for it at the repository level. For example: **Note:** Datasets are typically defined at the repository level, in `catalog.yml`; however, datasets used by a specific model (typically fact datasets) can be defined within the model itself. + +## description + +- **Type:** string +- **Required:** N +- **Added in** v1.6 + +A description of the catalog. + +Supported values: + +- String (optional) \ No newline at end of file diff --git a/sml-reference/model.md b/sml-reference/model.md index 8c82cb2..f5375c0 100644 --- a/sml-reference/model.md +++ b/sml-reference/model.md @@ -248,6 +248,7 @@ namespace Models{ class AttributeReference{ String name String dimension + String row_security String partition String distribution Array~String~ relationships_path @@ -646,15 +647,18 @@ definition. Supported properties: -- `name`: String, required. The name of the dimension attribute to +- `name`: String, required if `row_security` is undefined. The name of the dimension attribute to include. These values are used to group the summarized metric data in the resulting aggregate table. Note that user-defined aggregate definitions are fixed: they do not include every level of a hierarchy unless they are explicitly defined. -- `dimension`: String, required. The dimension to which the attribute +- `dimension`: String, required if `row_security` is undefined. The dimension to which the attribute defined by `name` belongs. +- `row_security`: String, required if `dimension` and `name` are + undefined. Allows row security to be included in a user defined aggregate. + - `partition`: String, optional. Adds a partition to the aggregate, and determines whether it should be defined on the key column, name column, or both. Supported values: `name`, `key`, `name+key` diff --git a/sml-reference/row-security.md b/sml-reference/row-security.md index 1d93275..0e5adb0 100644 --- a/sml-reference/row-security.md +++ b/sml-reference/row-security.md @@ -146,6 +146,16 @@ Supported values: multi-dimension-only queries do have security applied because they are joined using a synthetic measure from the fact table that relates them. +- `fact-only`: Security is applied when a query selects a Measure or a + Calculated Measure derived from the connected Fact dataset. + Security is *not* applied when a dim-only query uses the secured Fact dataset. + Security is *not* applied when a dim-only query selects a + degenerate dimension derived from the secured Fact dataset. + If a Model contains a Security dimension used inside of a + Dimension and it’s scope is set to “Fact Only”. + > ### Then the model fails to publish with the error message: + > - Dimension “Customer” has an unsupported Security dimension configuration. + > - Security Dimension “mySecDim” has scope “Fact Only” but is not connected to a fact dataset. - `all`: The security constraint is applied to all queries, unless there is no path to the security dimension. This is the case with two separate fact tables, each with their own unrelated dimensions.