Мусорное измерение: что это такое и почему это не мусор

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

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

Оглавление

Что такое нежелательные измерения?

The Data Warehouse Toolkit Кимбалла и Росса , одна из библий многомерного моделирования, определяет его как группировку флагов и индикаторов типично низкой кардинальности . Низкая кардинальность означает небольшое количество уникальных наблюдений в заданном поле.

В нашем примере у нас есть модель данных для нашего бизнеса по созданию нестандартных ПК. Модель данны�� относится к заказам и счетам. У нас также есть ряд флагов, где мы можем зафиксировать тип процессора , тип конфигурации башни (компактный или полный) и цель (игровая или рабочая станция).

Мусорное измерение: что это такое и почему это не мусор

Определение размеров мусора с помощью аналогии кухонного ящика для мусора

Если вы посмотрите на каждое из этих полей, то увидите, что в каждом поле есть только два уникальных наблюдения. Это то, что Кимбалл назвал бы флагом низкой кардинальности . Он говорит, что, создавая абстрактное измерение, мы удаляем флаги из таблицы фактов, помещая их в полезную размерную структуру.

Аналогия кухонного ящика для мусора для измерения мусора — хорошая. У каждого есть ящик, набитый резинками, скобами, батарейками, свечами на день рождения и так далее. Для любой из этих вещей не обязательно иметь собственный ящик, но вам нужно иметь место для их размещения.

Их сохранение может привести к увеличению размера таблицы фактов. Допустим, у нас есть таблица фактов с миллионом записей. Мы построили много компьютеров, и для каждого компьютера, который мы собираем, мы должны отметить процессор, башню и назначение. Это означает, что для одного миллиона строк заказанных ПК у нас также есть 3 миллиона флажков в таблице фактов.

Уменьшение размера таблицы фактов

Мы могли бы переместить их в таблицу измерений и связать только с идентификатором модели, чтобы удалить 3 миллиона флагов из таблицы фактов. Для этого мы можем сделать для каждого из этих флагов отдельную таблицу и она будет работать. Но этот процесс усложнит модель данных, в которой обычно требуется избегать таблиц с одним столбцом.

Идеальным решением является использование нежелательного измерения , где у вас есть куча флагов низкой кардинальности, связанных общим образом. Все они связаны с атрибутами компьютеров, которые мы создаем, но не таким прямым образом, как обычно для конкретной таблицы измерений.

Рассмотрение проблемы участника форума

Давайте взглянем на конкретное приложение, которое было размещено на форуме. Участник хотел создать два разных поля: одно для Stalled и одно для Active . Если клиент совершил транзакцию за последние 45 дней, она помечается как активная; в противном случае он помечается как остановленный.

Мусорное измерение: что это такое и почему это не мусор

Участник также хотел другую таблицу измерения для типа клиента, которая может быть либо с несколькими заказами, либо с одним заказом. Если на счете было две или более транзакций в любой момент истории с использованием одного номера счета, это будет считаться клиентом с несколькими заказами. И если бы у них был только один заказ для данного номера счета, это был бы клиент с одним заказом.

Итак, это два флага, которые мы хотим развивать. Давайте перейдем к LuckyTemplates и выясним, как это сделать.

Моделирование данных для нежелательного измерения

Давайте посмотрим на модель данных. Это очень простая модель данных. У нас есть расширенная таблица Dates и таблица Transactions .

Мусорное измерение: что это такое и почему это не мусор

В нашей таблице транзакций всего три поля: номер счета , дата счета и объем продаж .

Мусорное измерение: что это такое и почему это не мусор

Как правило, если мы сможем приблизить преобразование к источнику, мы это сделаем. Это не является динамическим в ходе сеанса отчетности, поэтому нам не нужно делать это в DAX .

Мы должны делать это либо в power query, либо в хранилище данных/SQL, если у нас есть такая возможность. Но пока давайте предположим, что мы этого не делаем и просто делаем это в power query .

Определение типа клиента для нежелательного измерения

Первое, что мы сделаем, это выясним тип клиента, будь то транзакция с одним или несколькими заказами. Мы будем использовать Group By , Count и Count Rows .

Мусорное измерение: что это такое и почему это не мусор

Затем добавьте все данные и сделайте это операцией All Rows , чтобы мы возвращали не агрегированную таблицу, а исходную таблицу с этим количеством строк в каждой строке.

Мусорное измерение: что это такое и почему это не мусор

Давайте посмотрим на результат и расширим его.

Мусорное измерение: что это такое и почему это не мусор

Мусорное измерение: что это такое и почему это не мусор

Мусорное измерение: что это такое и почему это не мусор

Мы можем добавить настраиваемый столбец и назвать его Тип клиента , а затем создать оператор IF. Утверждение: если Count равно 1, то это один заказ; в противном случае это многопорядковый.

Мусорное измерение: что это такое и почему это не мусор

Мы просто изменим столбец на текстовый тип. Теперь у нас есть одно из двух измерений, установленных в таблице фактов.

Мусорное измерение: что это такое и почему это не мусор

Давайте сделаем таблицу второго измерения. Для этого, если самый последний заказ составляет 45 дней или меньше с сегодняшней даты, клиент рассматривается как активный. Если в течение 45 дней с сегодняшнего дня нет заказа, клиент неактивен.

Мы добавим пользовательский столбец и назовем его Today . Затем добавьте DateTime.LocalNow , чтобы дать нам текущую дату и время, затем Date.From , чтобы дать нам только часть даты.

Мусорное измерение: что это такое и почему это не мусор

Давайте просто изменим это на тип данных даты, а затем переместим столбец на передний план.

Мусорное измерение: что это такое и почему это не мусор

Существует простой способ создать вычитание между двумя столбцами дат. Просто выделите эти две даты, нажмите «Даты» на ленте, а затем нажмите «Вычесть дни» .

Мусорное измерение: что это такое и почему это не мусор

Это даст вам разницу между этими двумя датами с точки зрения количества дней. Назовем этот новый столбец «Дни до сегодняшнего дня».

Мусорное измерение: что это такое и почему это не мусор

Следующий шаг — найти минимальное количество дней до сегодняшнего дня, что означает самый последний заказ для каждого номера счета. Если это число меньше или равно 45, оно активно.

Давайте сделаем еще Group By , затем Advanced , затем Account Number .

Мусорное измерение: что это такое и почему это не мусор

Опять же, мы будем использовать All Data для имени нового столбца и All Rows для операции.

Мусорное измерение: что это такое и почему это не мусор

На этот раз мы добавим « Минимум дней между с минимумом » в качестве операции и «Дней до сегодняшнего дня» в качестве столбца. Это даст нам самый последний заказ.

Мусорное измерение: что это такое и почему это не мусор

Затем мы расширяем All Data и удаляем Account Number .

Мусорное измерение: что это такое и почему это не мусор

Как только мы расширим это, у нас будет минимальное количество дней между номерами счетов.

Мусорное измерение: что это такое и почему это не мусор

Наконец, мы добавим еще один настраиваемый столбец и назовем его Client Timing . Мы добавим параметр «что, если», где, если наш Min Days Between меньше или равен 45, то он является Active или Stalled .

Мусорное измерение: что это такое и почему это не мусор

Мусорное измерение: что это такое и почему это не мусор

Удаление ненужных столбцов

Поскольку теперь у нас есть много поддерживающих столбцов, давайте нажмем «Выбрать столбцы» и удалим те, которые нам не нужны.

Мусорное измерение: что это такое и почему это не мусор

Мы удалим столбцы Count , Today , Days Before to Today и Min Days Between . Теперь у нас есть только исходная таблица фактов, а также столбцы «Тип клиента» и «Время клиента» .

Мусорное измерение: что это такое и почему это не мусор

Вместо того, чтобы хранить их в таблице фактов, давайте продублируем эту таблицу.

Мусорное измерение: что это такое и почему это не мусор

Мы назовем дубликат таблицы Account Flags .

Мусорное измерение: что это такое и почему это не мусор

Вернемся к таблице «Транзакции» и уберем поля «Тип клиента» и «Время клиента» .

Мусорное измерение: что это такое и почему это не мусор

Теперь у нас есть исходная таблица фактов и таблица флагов учетных записей.

Мусорное измерение: что это такое и почему это не мусор

Мусорное измерение: что это такое и почему это не мусор

Для таблицы «Флаги учетной записи» нам не нужны поля «Тип клиента» и «Время клиента» , поэтому мы их убираем. Мы просто выделяем все эти поля, удаляем строки и удаляем дубликаты.

Мусорное измерение: что это такое и почему это не мусор

Теперь у нас есть таблица нежелательных измерений. Осталось только нажать Close & Apply . Следующим шагом является подключение номера счета из нашей таблицы флагов счетов к номеру счета в нашей таблице транзакций .

Мусорное измерение: что это такое и почему это не мусор

У нас есть отношение «один ко многим» между таблицей «Транзакции» (которая является нашей таблицей фактов) и таблицей «Флаги учетной записи» (которая является нашей таблицей нежелательных измерений).


Построение отношений модели данных в LuckyTemplates
Моделирование данных в LuckyTemplates: советы и рекомендации

Заключение

Давайте поместим измерения Client Timing и Client Type на наш холст и превратим их в срезы. Теперь мы можем делать именно то, что элемент изначально хотел сделать, а именно выполнять нарезку на основе этих атрибутов.

Если мы нажмем «Мультизаказ», у нас останутся только те, у которых есть несколько заказов, а если мы перейдем к «Одиночному заказу», мы останемся с теми, у кого есть одна покупка.

Мусорное измерение: что это такое и почему это не мусор

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

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

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.