Как проходил новогодний корпоратив у компании abgroup.tech!
Внедрение Сервера 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:
Сохраняем путь подключения данных:
Импорт данных:
Отмечаем поля сводной таблицы: