Daanse Tutorial - Access Catalog Grant
This tutorial discusses roles with CatalogGrant.
roleAllrole : use CatalogGrant accessall; (accesscube1)roleNonerole : use CatalogGrant accessnone; (no accesscube1)roleAllDimWithCubeGrandrole : use CatalogGrant accessall_dimensions; CubeGrantcube1access all;cube2access none (accesscube1)roleAllDimWithoutCubeGrandrole: use CatalogGrant accessall_dimensionswithout cube grant (As result is 'no access'. For access need CubeGrant withcustomorall)
Database Schema
The Database Schema contains the Fact table with two columns: KEY and VALUE. The KEY column is used as the discriminator in the Level and Hierarchy definitions.
<relational:Schema xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmi:id="_schema">
<ownedElement xsi:type="relational:Table" xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE"/>
</ownedElement>
</relational:Schema>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Query
The Query is a simple TableSource that selects all columns from the Fact table to use in the hierarchy and in the cube for the measures.
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<rolapsrc:TableSource xmi:id="_tablesource_fact" table="_table_fact"/>
<relational:Table xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE"/>
</relational:Table>
</xmi:XMI>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Level1
This Example uses one simple Level1 based on the KEY column.
<rolaplev:Level xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:rolaplev="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy/level" xmi:id="_level_level1" name="Level1">
<column href="_column_fact_key"/>
</rolaplev:Level>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Hierarchy1 without hasAll Level1
The Hierarchy1 is defined with the hasAll property set to false and the one level1.
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolaphier="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy" xmlns:rolaplev="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy/level" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<rolaphier:ExplicitHierarchy xmi:id="_explicithierarchy_hierarchy1" name="Hierarchy1" hasAll="false" primaryKey="_column_fact_key" source="_tablesource_fact" levels="_level_level1"/>
<rolapsrc:TableSource xmi:id="_tablesource_fact" table="_table_fact"/>
<relational:Table xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE"/>
</relational:Table>
<rolaplev:Level xmi:id="_level_level1" name="Level1" column="_column_fact_key"/>
</xmi:XMI>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Dimension1
The dimension1 is defined with the one hierarchy1.
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolapdim="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension" xmlns:rolaphier="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy" xmlns:rolaplev="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy/level" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<rolapdim:StandardDimension xmi:id="_standarddimension_dimension1" name="Dimension1" hierarchies="_explicithierarchy_hierarchy1"/>
<rolapsrc:TableSource xmi:id="_tablesource_fact" table="_table_fact"/>
<relational:Table xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE"/>
</relational:Table>
<rolaphier:ExplicitHierarchy xmi:id="_explicithierarchy_hierarchy1" name="Hierarchy1" hasAll="false" primaryKey="_column_fact_key" source="_tablesource_fact" levels="_level_level1"/>
<rolaplev:Level xmi:id="_level_level1" name="Level1" column="_column_fact_key"/>
</xmi:XMI>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Cube1 with access all
The cube1 is defined by the DimensionConnector1 and the DimensionConnector2 and the MeasureGroup with measure with aggregation sum.
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolapcube="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube" xmlns:rolapdim="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension" xmlns:rolaphier="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy" xmlns:rolaplev="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy/level" xmlns:rolapmeas="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube/measure" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<rolapcube:PhysicalCube xmi:id="_physicalcube_cube1" name="Cube1" source="_tablesource_fact">
<dimensionConnectors xmi:id="_dimensionconnector_dimension1" foreignKey="_column_fact_key" dimension="_standarddimension_dimension1" overrideDimensionName="Dimension1"/>
<dimensionConnectors xmi:id="_dimensionconnector_dimension2" foreignKey="_column_fact_key" dimension="_standarddimension_dimension1" overrideDimensionName="Dimension2"/>
<measureGroups xmi:id="_measuregroup">
<measures xsi:type="rolapmeas:SumMeasure" xmi:id="_summeasure_measure1" name="Measure1" column="_column_fact_value"/>
</measureGroups>
</rolapcube:PhysicalCube>
<rolaplev:Level xmi:id="_level_level1" name="Level1" column="_column_fact_key"/>
<rolapsrc:TableSource xmi:id="_tablesource_fact" table="_table_fact"/>
<rolapdim:StandardDimension xmi:id="_standarddimension_dimension1" name="Dimension1" hierarchies="_explicithierarchy_hierarchy1"/>
<relational:Table xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE"/>
</relational:Table>
<rolaphier:ExplicitHierarchy xmi:id="_explicithierarchy_hierarchy1" name="Hierarchy1" hasAll="false" primaryKey="_column_fact_key" source="_tablesource_fact" levels="_level_level1"/>
</xmi:XMI>Note: This is only a symbolic example. For the exact definition, see the Definition section.
roleAll
The roleAll use CatalogGrant access all; (access cube1)
<rolapcacc:AccessRole xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:rolapcacc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/access/common" xmi:id="_accessrole_roleall" name="roleAll">
<accessCatalogGrants xmi:id="_accesscataloggrant" catalogAccess="all">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant" databaseSchemaAccess="all">
<databaseSchema href="_schema"/>
</databaseSchemaGrants>
</accessCatalogGrants>
</rolapcacc:AccessRole>Note: This is only a symbolic example. For the exact definition, see the Definition section.
roleNone
The roleNone use CatalogGrant access none; (no access cube1)
<rolapcacc:AccessRole xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:rolapcacc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/access/common" xmi:id="_accessrole_rolenone" name="roleNone">
<accessCatalogGrants xmi:id="_accesscataloggrant">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant" databaseSchemaAccess="all">
<databaseSchema href="_schema"/>
</databaseSchemaGrants>
</accessCatalogGrants>
</rolapcacc:AccessRole>Note: This is only a symbolic example. For the exact definition, see the Definition section.
roleAllDimWithCubeGrand
The roleAllDimWithCubeGrand use CatalogGrant access all_dimensions; CubeGrant access all; (access cube1)
<rolapcacc:AccessRole xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:rolapcacc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/access/common" xmlns:rolapcube="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube" xmi:id="_accessrole_rolealldimwithcubegrand" name="roleAllDimWithCubeGrand">
<accessCatalogGrants xmi:id="_accesscataloggrant" catalogAccess="all_dimensions">
<cubeGrants xmi:id="_accesscubegrant_cube1" cubeAccess="all">
<cube xsi:type="rolapcube:PhysicalCube" href="_physicalcube_cube1"/>
</cubeGrants>
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant" databaseSchemaAccess="all">
<databaseSchema href="_schema"/>
</databaseSchemaGrants>
</accessCatalogGrants>
</rolapcacc:AccessRole>Note: This is only a symbolic example. For the exact definition, see the Definition section.
roleAllDimWithoutCubeGrand
The roleAllDimWithoutCubeGrand use CatalogGrant access all_dimensions without CubeGrant; (no access cube1)
<rolapcacc:AccessRole xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:rolapcacc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/access/common" xmi:id="_accessrole_rolealldimwithoutcubegrand" name="roleAllDimWithoutCubeGrand">
<accessCatalogGrants xmi:id="_accesscataloggrant" catalogAccess="all_dimensions">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant" databaseSchemaAccess="all">
<databaseSchema href="_schema"/>
</databaseSchemaGrants>
</accessCatalogGrants>
</rolapcacc:AccessRole>Note: This is only a symbolic example. For the exact definition, see the Definition section.
Definition
This file represents the complete definition of the catalog.
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:relational="http://www.omg.org/spec/CWM/1.1/resource/relational" xmlns:rolapcacc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/access/common" xmlns:rolapcat="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/catalog" xmlns:rolapcube="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube" xmlns:rolapdim="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension" xmlns:rolaphier="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy" xmlns:rolaplev="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/dimension/hierarchy/level" xmlns:rolapmeas="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/olap/cube/measure" xmlns:rolapsrc="https://www.daanse.org/spec/org.eclipse.daanse.rolap.mapping/database/source">
<relational:SQLSimpleType xmi:id="_sqlsimpletype_character_varying" name="CHARACTER VARYING" structuralFeature="_column_fact_key" typeNumber="12"/>
<relational:SQLSimpleType xmi:id="_sqlsimpletype_integer" name="INTEGER" structuralFeature="_column_fact_value" typeNumber="4"/>
<rolapcat:Catalog xmi:id="_catalog_access_catalog_grant" description="Demonstrates access control with catalog grants and roles" name="Daanse Tutorial - Access Catalog Grant" cubes="_physicalcube_cube1" accessRoles="_accessrole_roleall _accessrole_rolenone _accessrole_rolealldimwithcubegrand _accessrole_rolealldimwithoutcubegrand" dbschemas="_schema"/>
<relational:Schema xmi:id="_schema">
<ownedElement xsi:type="relational:Table" xmi:id="_table_fact" name="Fact">
<feature xsi:type="relational:Column" xmi:id="_column_fact_key" name="KEY" type="_sqlsimpletype_character_varying"/>
<feature xsi:type="relational:Column" xmi:id="_column_fact_value" name="VALUE" type="_sqlsimpletype_integer"/>
</ownedElement>
</relational:Schema>
<rolapsrc:TableSource xmi:id="_tablesource_fact" table="_table_fact"/>
<rolaplev:Level xmi:id="_level_level1" name="Level1" column="_column_fact_key"/>
<rolaphier:ExplicitHierarchy xmi:id="_explicithierarchy_hierarchy1" name="Hierarchy1" hasAll="false" primaryKey="_column_fact_key" source="_tablesource_fact" levels="_level_level1"/>
<rolapdim:StandardDimension xmi:id="_standarddimension_dimension1" name="Dimension1" hierarchies="_explicithierarchy_hierarchy1"/>
<rolapcube:PhysicalCube xmi:id="_physicalcube_cube1" name="Cube1" source="_tablesource_fact">
<dimensionConnectors xmi:id="_dimensionconnector_dimension1" foreignKey="_column_fact_key" dimension="_standarddimension_dimension1" overrideDimensionName="Dimension1"/>
<dimensionConnectors xmi:id="_dimensionconnector_dimension2" foreignKey="_column_fact_key" dimension="_standarddimension_dimension1" overrideDimensionName="Dimension2"/>
<measureGroups xmi:id="_measuregroup">
<measures xsi:type="rolapmeas:SumMeasure" xmi:id="_summeasure_measure1" name="Measure1" column="_column_fact_value"/>
</measureGroups>
</rolapcube:PhysicalCube>
<rolapcacc:AccessRole xmi:id="_accessrole_roleall" name="roleAll">
<accessCatalogGrants xmi:id="_accesscataloggrant_3" catalogAccess="all">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant" databaseSchemaAccess="all" databaseSchema="_schema"/>
</accessCatalogGrants>
</rolapcacc:AccessRole>
<rolapcacc:AccessRole xmi:id="_accessrole_rolealldimwithcubegrand" name="roleAllDimWithCubeGrand">
<accessCatalogGrants xmi:id="_accesscataloggrant_2" catalogAccess="all_dimensions">
<cubeGrants xmi:id="_accesscubegrant_cube1" cubeAccess="all" cube="_physicalcube_cube1"/>
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant_3" databaseSchemaAccess="all" databaseSchema="_schema"/>
</accessCatalogGrants>
</rolapcacc:AccessRole>
<rolapcacc:AccessRole xmi:id="_accessrole_rolealldimwithoutcubegrand" name="roleAllDimWithoutCubeGrand">
<accessCatalogGrants xmi:id="_accesscataloggrant" catalogAccess="all_dimensions">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant_2" databaseSchemaAccess="all" databaseSchema="_schema"/>
</accessCatalogGrants>
</rolapcacc:AccessRole>
<rolapcacc:AccessRole xmi:id="_accessrole_rolenone" name="roleNone">
<accessCatalogGrants xmi:id="_accesscataloggrant_1">
<databaseSchemaGrants xmi:id="_accessdatabaseschemagrant_1" databaseSchemaAccess="all" databaseSchema="_schema"/>
</accessCatalogGrants>
</rolapcacc:AccessRole>
</xmi:XMI>Tutorial Zip
This file contains the data-tables as csv and the mapping as xmi file.