Qlik Sense VS Power BI – схемы данных

Возможность связать несколько таблиц данных друг с другом из разных источников делает Qlik Sense и Microsoft Power BI просто неотразимыми. В данной статье мы собираемся рассмотреть различия, сильные и слабые стороны в построении схемы данных каждого инструмента.
Qlik и Microsoft используют очень разные подходы к отношениям данных, а в случае Qlik их ассоциативная модель (QIX) — это один из элементов, который они активно рекламируют как отличительную особенность.
Microsoft, наоборот, использует более традиционную схему базы данных с отношениями «один-ко-многим». Разработчики вынуждены быть более креативными, чтобы разработать отношения «многие-ко-многим».
На самом ли деле ассоциативная схема Qlik многим лучше, чем то, что предлагает Power BI?

Qlik Sense – ассоциативный движок

Здесь представлено описание движка от Qlik.

Вот схема данных из приложения World Wide Importers, которое я создал в Qlik Sense:

Замечания по модели Qlik Sense QIX:

  1. Все отношения были созданы Qlik Sense автоматически. По мере внесения изменений путем удаления или добавления таблиц Qlik Sense автоматически настраивает схему данных.
  2. Под моей зеленой стрелкой вы увидите таблицу под названием $ Syn 3 Table. Эта таблица была создана автоматически Qlik и действует как центральная точка отношений.
  3. В этой схеме вы не видите таблицу дат. Она скрыта. Qlik Sense создал её автоматически. В этом случае я связывал ключевые даты с этой таблицей через скрипт. Кроме того, я мог бы импортировать пользовательскую таблицу дат (почти всегда является моим предпочтением), которая была бы видна.

Схема Qlik Sense QIX работает так, как рекламируется?

Да, и очень хорошо. Я продолжаю удивляться, как схема данных в Qlik работает с небольшим вовлечением пользователя.

Удалось ли мне обмануть Qlik Sense, чтобы отобразить плохие данные?

Да, но скорее плохим исполнением, чем сбоями инструмента.

Что насчёт отношений «многие-ко-многим»?

Чтобы испытать отношения «многие-ко-многим», я добавил простую таблицу StockItemStockGroup. Я также добавил таблицу, в которой есть названия групп товаров, которые обозначают товарные группы.
Таблица StockItemStockGroup выглядит так:


Каждый элемент, например, StockItem 1, «USB Missile Launcher (Green)» включен в несколько групп. USB missile launcher является частью нескольких групп — 6: Computing Novelties, 1: Novelty Items и 7: USB novelties.
Отношения – многие «sales activities» (торговые операции) к одному «Stock Item»(товар на складе) ко многим «Stock Group»(группа товаров) к одному «Stock Name»(название товара) для каждой группы.
Этого отношения достаточно, чтобы застигнуть врасплох некоторые системы или, по крайней мере, заставить разработчика работать немного усерднее. Qlik Sense автоматически загрузил таблицы и правильно создал отношения:

Я также проверил отношения «многие-ко-многим», исключив таблицу StockItem. У Qlik Sense не было проблем с этим.
В этом случае, я тестировал схему данных, чтобы убедиться в ее работоспособности. Это было сделано с использованием вычислений и фильтров в приложении визуализации Qlik Sense, а затем проверено на сервере SQL.

Схема данных от Microsoft Power BI

На раннем этапе эволюции продукта Power BI (я имею в виду PowerPivot) отношения требовали ручного создания. Отношения были только однонаправленные и «один-ко-многим». Вы можете прочитать бесчисленные блоги в Интернете о том, как построить отношения «многие ко многим» в схемах. Лучше сказать, как обойти ограничение «один-ко-многим». Почти всегда будут случаи, когда у вас имеются отношения «многие-ко-многим» или фильтры нуждаются в обоих направлениях.
Многое изменилось с тех пор. Сейчас Power BI довольно хорошо работает с распознаванием отношений. Ниже приведен пример в Power BI, используя те же данные что и для тестирования Qlik:

Замечания по схеме данных в Power BI:

  1. Вы заметите 1 и * в отношениях, а также стрелку. Эти стрелки относятся к направлению отношения, которое перетекает из уникального элемента в таблицу с несколькими значениями.
  2. Где находится моя зелёная стрелка, вы заметите пунктирную линию. Пунктирная линия обозначает неактивное отношение. В Power BI вы можете иметь только одно активное отношение между двумя таблицами в любой момент времени. Команды DAX используются для активации неактивных отношений, когда это требуется. Этот подход может показаться некоторым ограничением, но он работает достаточно эффективно.
  3. Эта схема имеет календарь. Power BI создаст «Автоматическую таблицу дат», если вы включили параметр. В этом случае я импортировал пользовательскую таблицу, которая является личным предпочтением.

Работает ли автоматическое распознавание связей в Power BI?

Автоматическое обнаружение связей в Power BI является значительным улучшением по сравнению с отсутствием обнаружения.
Ручная работа всё же необходима:

  1. Пользователь / разработчик должен создать вторичные отношения между таблицами.
  2. Вы должны переопределять отношения, если хотите, чтобы кросс-фильтрация была многонаправленной.

Может ли Microsoft Power BI управлять отношениями «многие-ко-многим»?

Да или нет. Microsoft Power BI может создать их. Тем не менее, иногда вам нужно «обходное решение» (я слышал, что некоторые называют это черной магией), чтобы заставить его работать. В приведенном выше случае, где мы ввели таблицу StockItemStockGroup и таблицу StockGroups, вы получите следующую схему:


Я хочу указать на зеленый круг, который указывает на многонаправленные отношения. Как упоминалось выше, пользователь должен установить это вручную. Схема не работает, если ее оставить в режиме автоматического режима.

Что произойдет, если пользователь попытается установить связь «многие-ко-многим» в Power BI?

Power BI лишит связей таблицы StockItemStockGroups и StockGroup. Если я попытаюсь восстановить отношение к таблице счетов (invoice table) и таблице отставаний (backlog table), я получу следующее.

Power BI не создаст отношения многие ко многим.
Катастрофа, не так ли? В Power BI это сложнее, чем в Qlik Sense. Решение заключается в том, что вы помещаете таблицу с уникальными значениями между двумя таблицами, к которым вы пытаетесь присоединиться, и схема будет работать.

Одна небольшая проблема со схемами данных в Power BI:

Эта небольшая загвоздка – моя любимая мозоль в Power BI, поэтому думаю, что она стоит упоминания.
Вот вам ситуация:

  1. Пользователь создал схему данных;
  2. Пользователь добавляет вычисляемые поля и визуализацию;
  3. Удаляет одну таблицу;
  4. Затем создает обратно абсолютно такую же таблицу.

В этом случае вычисления и визуализации становятся неработоспособными, потому как они связаны с удаленной таблицей. Даже если вычисляемое значение одинаковое, оно не распознает таблицу и поля до тех пор, пока вы не перейдете непосредственно к вычислению.
Данная проблема существует только в Power BI, Qlik Sense справляется с ней.

Qlik Sense vs. Power BI – ключевые различия в схемах данных

Qlik Sense работает с отношениями «многие-ко-многим» без необходимости вовлечения пользователя. Все отношения таблиц в Qlik Sense являются автоматическими. Если вы хотите добавить или изменить отношения, вам нужно сделать это в скрипте. Существуют предварительные отношения с синтетическими таблицами (synthetic tables), созданными в Qlik Sense, которые не встречаются в стандартной схеме отношений баз данных.
Power BI имеет максимум одно активное отношение для двух таблиц.
Power BI не поддерживает отношения «многие-ко-многим», но они могут быть созданы обходными путями. Power BI позволяет пользователю графически взаимодействовать со схемой данных/отношениями.

Заключение

Преимуществом Qlik Sense являются отношения между таблицами и создание схемы данных. Qlik обещает, что это позволит вам получить всю картину против частичного представления у конкурентов. Решение, которые они создали, является надёжным. Тем не менее, я еще не сталкивался с ситуацией с Microsoft Power BI, когда бы я не мог создать схему данных для выполнения необходимого анализа.

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,199 seconds