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

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

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

Зміст

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

Кімбол і Росс 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, ми залишимо ті, які мають одну покупку.

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

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

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

Leave a Comment

Змініть формати дати за допомогою редактора Power Query

Змініть формати дати за допомогою редактора Power Query

У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора Power Query в LuckyTemplates.

Power Query: об’єднайте файли з кількох папок

Power Query: об’єднайте файли з кількох папок

Дізнайтеся, як об’єднати файли з кількох папок у мережі, робочому столі, OneDrive або SharePoint за допомогою Power Query.

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Цей підручник пояснює, як обчислити місячне ковзне середнє на базі даних з початку року за допомогою функцій AVERAGEX, TOTALYTD та FILTER у LuckyTemplates.

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

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

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

Мобільні звіти LuckyTemplates. Поради та методи

Мобільні звіти LuckyTemplates. Поради та методи

У цьому короткому посібнику розповідається про функцію мобільних звітів LuckyTemplates. Я збираюся показати вам, як ви можете ефективно створювати звіти для мобільних пристроїв.

Звіти про професійну аналітику послуг у LuckyTemplates

Звіти про професійну аналітику послуг у LuckyTemplates

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

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Ознайомтеся з основними оновленнями для Power Apps і Power Automate, а також їх перевагами та наслідками для Microsoft Power Platform.

Загальні функції SQL: огляд

Загальні функції SQL: огляд

Відкрийте для себе деякі поширені функції SQL, які ми можемо використовувати, наприклад String, Date і деякі розширені функції для обробки та маніпулювання даними.

Створення шаблону LuckyTemplates: керівництво та поради

Створення шаблону LuckyTemplates: керівництво та поради

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

Параметри полів і малі кратні в LuckyTemplates

Параметри полів і малі кратні в LuckyTemplates

У цьому блозі ми продемонструємо, як шарувати параметри поля з малими кратними, щоб створити неймовірно корисну інформацію та візуальні ефекти.