Внедрение Сервера eMondrian, реляционного OLAP-сервера (ROLAP)

Внедрение Сервера eMondrian, реляционного OLAP-сервера (ROLAP)

Обзоры

Отдел DevOps и инфраструктуры abgroup.tech будет использовать ответвление eMondrian движка Mondrian ROLAP. Сервер eMondrian — это реляционный OLAP-сервер (ROLAP), то есть он всегда показывает данные из источника в реальном времени. Этот сервер выполняет запросы, написанные на языке MDX, считывает данные из исходной базы данных и представляет результаты в многомерном формате. Является ответвлением движка Mondrian ROLAP. Главной особенностью этой версии является поддержка клиентов ADOMD.NET и Excel, eMondrian уже включает драйвер ClickHouse.

Разворачивание происходит с помощью nxs-universal-chart, за основу берется образ emondrian/emondrian

При разворачивании монтируется два файла:

- name: datasources

mountPath: /usr/local/tomcat/webapps/emondrian/WEB-INF/datasources.xml

subPath: datasources.xml

- name: custom-schema

mountPath: /usr/local/tomcat/webapps/emondrian/WEB-INF/schema/custom-schema.xml

subPath: custom-schema.xml


Источник данных ClickHouse для Mondrian. Он определен в datasources.xml:

datasources.xml
<?xml version="1.0"?>
<!--
 
  http://mondrian.pentaho.com/documentation/installation.php#5_1_Describe_the_data_sources_in_datasources.xml
 
-->
<DataSources>
  <DataSource>
    <DataSourceName>ClickHouse</DataSourceName>
    <DataSourceDescription>ClickHouse Data</DataSourceDescription>
    <URL>https://<emondrian_url>/emondrian/xmla</URL>
    <DataSourceInfo>Provider=mondrian;Jdbc=jdbc:clickhouse://<clickhouse_url>:8123/<database>?ssl=false&user=<user>&password=<password>;JdbcDrivers=ru.yandex.clickhouse.ClickHouseDriver</DataSourceInfo>
    <ProviderName>Mondrian</ProviderName>
    <ProviderType>MDP</ProviderType>
    <AuthenticationMode>Unauthenticated</AuthenticationMode>
    <Catalogs>
        <Catalog name="CustomSchema">
            <Definition>/WEB-INF/schema/custom-schema.xml</Definition>
        </Catalog>
    </Catalogs>
  </DataSource>
</DataSources>

Схема Mondrian определяется в файле custom-schema.xml:

custom-schema.xml
<?xml version="1.0"?>
<Schema name="CustomSchema">
  <!-- Cube BasedOnQuery based on a query instead of a table.-->
  <Cube name="BasedOnQuery">
    <View alias="BasedOnQuery">
      <SQL dialect="generic">
        <![CDATA[select * from <table_name>]]>
      </SQL>
    </View>
    <Dimension name="Title" foreignKey="title">
      <Hierarchy hasAll="true" allMemberName="All Titles">
        <Level name="Title" column="title" uniqueMembers="true"/>
      </Hierarchy>
    </Dimension>
    <Measure name="Overdue" column="overdue" aggregator="sum" formatString="#,###"/>
  </Cube>
  <!--Cube BasedOnData is based on data from '<table_name>' table.-->
  <Cube name="BasedOnData">
    <Table name="bitrix_tasks_view"/>
    <Dimension name="Title" foreignKey="title">
      <Hierarchy hasAll="true" allMemberName="All Titles">
        <Level name="Title" column="title" uniqueMembers="true"/>
      </Hierarchy>
    </Dimension>
    <Measure name="Overdue" column="overdue" aggregator="sum" formatString="#,###"/>
  </Cube>
</Schema>

Здесь описаны максимально простая схема и два подхода к написанию куба

Куб BasedOnQuery — это пример того, как создать куб на основе запроса вместо таблицы.

Куб BasedOnData основан на данных из таблицы <table_name>. 

Mondrian and Excel:

Откройте Excel → Создать → Пустая книга:

Данные → Получить данные → Из базы данных → Из Analysis Services:

Вводим имя сервера → https://<emondrian_url>/emondrian/xmla

Выбираем Cube:

Сохраняем путь подключения данных:

Импорт данных:

Отмечаем поля сводной таблицы:

Читать также