Вимір сміття: що це таке і чому це щось інше, але не сміття

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

Насправді я працював над запитанням із , і сміттєвий вимір був ідеальним рішенням для нього. Як тільки ви побачите та зрозумієте це, ви знайдете для нього багато застосувань у власній роботі. Ви можете переглянути повне відео цього підручника внизу цього блогу.

Зміст

Що таке розміри сміття?

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

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Визначення розмірів сміття за допомогою аналогії ящика для кухонного сміття

Якщо ви подивіться на кожне з цих полів, то в кожному полі є лише два унікальні спостереження. Це те, що Кімбол назвав би прапором низької кардинальності . Він каже, що, створюючи абстрактний вимір, ми видаляємо прапори з таблиці фактів, одночасно розміщуючи їх у корисній структурі вимірів.

Аналогія кухонного ящика для сміття для розміру сміття є хорошою. У кожного є шухляда, наповнена гумками, скобами, батарейками, свічками до дня народження тощо. Для будь-якої з цих речей не важливо мати окрему шухляду, але вам потрібно мати місце, де їх поставити.

Зберігання їх може призвести до збільшення розміру таблиці фактів. Скажімо, у нас є таблиця фактів із мільйоном записів. Ми створили багато комп’ютерів, і для кожного комп’ютера, який ми створюємо, ми маємо позначити процесор, башту та призначення. Це означає, що для одного мільйона рядків ПК, які були замовлені, ми також маємо 3 мільйони позначок у таблиці фактів.

Зменшення розміру таблиці фактів

Ми могли б перемістити їх до таблиці розмірів і зв’язати лише з ідентифікатором моделі, щоб видалити 3 мільйони позначок із таблиці фактів. Для цього ми можемо створити окрему таблицю для кожного з цих прапорів, і це буде працювати. Але цей процес ускладнить модель даних, де зазвичай потрібно уникати таблиць з одним стовпцем.

Ідеальним рішенням є використання сміттєвого виміру , де у вас є купа позначок низької потужності, пов’язаних загальним чином. Усе це пов’язано з атрибутами комп’ютерів, які ми створюємо, але не дуже прямо, як зазвичай для конкретної таблиці розмірів.

Перегляд проблеми учасника форуму

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Учасник також хотів іншу таблицю розмірів для типу клієнта, яка є або багатопорядковою, або єдиною. Якщо в обліковому записі було дві або більше транзакцій у будь-який момент історії з використанням одного номера рахунку, це вважатиметься клієнтом із кількома замовленнями. І якби у них було лише одне замовлення для даного номера рахунку, це був би клієнт з єдиним замовленням.

Отже, це два прапори, які ми хочемо розробити. Давайте перейдемо до LuckyTemplates і з’ясуємо, як це зробити.

Моделювання даних для вимірювання сміття

Давайте поглянемо на модель даних. Це дуже проста модель даних. Ми маємо свій розширенийі Таблиця транзакцій .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Наша таблиця транзакцій містить лише три поля: номер рахунку , дату рахунка-фактури та кількість продажу .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Загалом, якщо ми зможемо підштовхнути трансформацію ближче до джерела, ми це зробимо. Це не динамічно протягом сеансу звітування, тому нам не потрібно робити це в .

Ми повинні робити це або в Power Query, або в сховищі даних/SQL, якщо у нас є така можливість. Але наразі припустімо, що ні, і що ми просто робимо це.

Визначення типу клієнта для виміру сміття

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Потім додайте всі дані та зробіть операцію «Усі рядки» , щоб ми повертали не зведену таблицю, а початкову таблицю з кількістю рядків у кожному рядку.

Вимір сміття: що це таке і чому це щось інше, але не сміття

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Ми можемо додати спеціальний стовпець і назвати його Тип клієнта , а потім створити оператор IF. Твердження: якщо Count дорівнює 1, то це єдине замовлення; інакше це багатопорядковий.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Ми просто змінимо тип стовпця на текстовий. Тепер ми маємо один із наших двох вимірів у таблиці фактів.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Давайте зробимо таблицю другого розміру. Для цього, якщо до останнього замовлення минуло 45 днів або менше від сьогоднішньої дати, клієнт вважається активним. Якщо протягом 45 днів із сьогоднішнього дня немає замовлення, то клієнт неактивний.

Ми додамо спеціальний стовпець і назвемо стовпець Today . Потім додайте DateTime.LocalNow , щоб отримати поточну дату й час, а потім Date.From , щоб отримати лише частину дати.

Вимір сміття: що це таке і чому це щось інше, але не сміття

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Є простий спосіб створити віднімання між двома стовпцями дат. Просто виділіть ці дві дати, натисніть «Дати» на стрічці, а потім натисніть «Відняти дні» .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Це дасть вам різницю між цими двома датами з точки зору кількості днів. Давайте назвемо цей новий стовпець Дні до сьогодні.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Наступним кроком є ​​визначення мінімальної кількості днів до сьогоднішнього дня, що означає останнє замовлення для кожного номера рахунку. Якщо це число менше або дорівнює 45, воно активне.

Давайте зробимо ще групу за , потім розширені , а потім номер облікового запису .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Знову ж таки, ми використаємо Усі дані для нового імені стовпця та Усі рядки для роботи.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Цього разу ми додамо «Мінімальна кількість днів між» із «Мінімум» як операцію та стовпець « Дні до сьогоднішнього дня» . Це дасть нам останнє замовлення.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Потім ми розгортаємо всі дані та видаляємо номер рахунку .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Коли ми розширимо це, ми матимемо мінімальну кількість днів між номерами рахунків.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Нарешті, ми додамо ще один спеціальний стовпець і назвемо його «Час клієнта» . Ми додамо параметр «що-якщо», де якщо наш Min Days Between менше або дорівнює 45, це означає, що він активний або зупинений .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Видалення непотрібних стовпців

Оскільки тепер у нас багато допоміжних стовпців, давайте клацнемо «Вибрати стовпці» та вилучимо ті, які нам не потрібні.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Ми видалимо стовпці «Кількість» , «Сьогодні », «Дні до сьогодні » та «Мінімальна кількість днів між» . Тепер ми маємо лише вихідну таблицю фактів, а також стовпці «Тип клієнта» та «Час клієнта» .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Замість того, щоб зберігати їх у таблиці фактів, давайте продублюємо цю таблицю.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Ми назвемо повторювану таблицю Account Flags .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Давайте повернемося до таблиці Transactions і вилучимо поля Client Type і Client Timing .

Вимір сміття: що це таке і чому це щось інше, але не сміття

Тепер у нас є вихідна таблиця фактів і таблиця прапорів облікового запису.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Для таблиці «Прапорці облікового запису» нам не потрібні поля «Тип клієнта» та «Час клієнта» , тому ми вилучаємо їх. Ми просто виділяємо всі ці поля, видаляємо рядки та видаляємо дублікати.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Тепер у нас є наша таблиця розмірів сміття. Все, що залишилося, це натиснути «Закрити та застосувати» . Наступним кроком буде зв’язати номер рахунку з нашої таблиці прапорів облікового запису з номером рахунку в нашій таблиці транзакцій .

Вимір сміття: що це таке і чому це щось інше, але не сміття

У нас є зв’язок «один-до-багатьох» між таблицею Transactions (це наша таблиця фактів) і таблицею Account Flags (яка є нашою таблицею вимірювань небажаних).



Висновок

Давайте перенесемо параметри Client Timing і Client Type на наше полотно та перетворимо їх на слайсери. Тепер ми можемо робити саме те, що учасник хотів зробити спочатку, тобто розрізати на основі цих атрибутів.

Якщо ми натиснемо Multi-Order, ми залишимо лише ті, які мають кілька замовлень, а якщо ми перейдемо до Single-Order, ми залишимо ті, які мають одну покупку.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Підводячи підсумок, це в основному те, що таке вимір сміття, і як ви можете його створити. Це дуже корисний прийом, якщо у вас є купа різноманітних позначок низької потужності, які ви хочете ефективно включити у свою модель даних.

Техніка групування за всіма рядками є надзвичайно корисною для створення цих непотрібних розмірів. Сподіваюся, ви знайшли це корисним і як завжди.


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Дізнайтеся, як обчислювати динамічну маржу прибутку за допомогою LuckyTemplates і як ви можете отримати більше інформації, глибше досліджуючи результати.

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

Дізнайтеся, як правильно сортувати поля зі стовпців розширеної таблиці дат. Це хороша стратегія для складних полів.

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.