Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Dzisiaj chcę porozmawiać o koncepcji modelowania danych zwanej wymiarem śmieci . Z jego nazwy można by pomyśleć, że jest to technika, która jest uwłaczająca i coś, czego chciałbyś uniknąć, ale w rzeczywistości jest to przydatne podejście.

W rzeczywistości pracowałem nad pytaniem z i wymiar śmieci był idealnym rozwiązaniem. Kiedy już to zobaczysz i zrozumiesz, znajdziesz dla niego wiele zastosowań we własnej pracy. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

Spis treści

Jakie są wymiary śmieci?

The Data Warehouse Toolkit autorstwa Kimballa i Rossa , jedna z biblii modelowania wymiarowego, definiuje je jako grupowanie flag i wskaźników o typowo niskiej liczności . Niska liczność oznacza niewielką liczbę unikalnych obserwacji w obrębie danego pola.

W naszym przykładzie mamy model danych dla naszej firmy polegającej na budowaniu niestandardowych komputerów. Model danych dotyczy zamówień i faktur. Mamy również wiele flag, w których możemy uchwycić typ procesora , typ konfiguracji wieży (kompaktowy lub pełny) i cel (gra lub stacja robocza).

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Definiowanie wymiarów śmieci za pomocą analogii kuchennej szuflady na śmieci

Jeśli spojrzysz na każde z tych pól, zobaczysz tylko dwie unikalne obserwacje w każdym polu. To właśnie Kimball nazwałby flagą o niskiej liczności . Mówi, że tworząc abstrakcyjny wymiar, usuwamy flagi z tabeli faktów, jednocześnie umieszczając je w użytecznych ramach wymiarowych.

Analogia kuchennej szuflady na śmieci do wymiaru śmieci jest dobra. Każdy ma szufladę pełną gumek recepturek, zszywek, baterii, świeczek urodzinowych itp. Nie jest ważne, aby każda z tych rzeczy gwarantowała posiadanie własnej szuflady, ale musisz mieć miejsce, aby je umieścić.

Zachowanie ich może spowodować zwiększenie rozmiaru tabeli faktów. Załóżmy, że mamy tabelę faktów z milionem rekordów. Zbudowaliśmy wiele komputerów i dla każdego zbudowanego komputera musimy oznaczyć procesor, wieżę i przeznaczenie. Oznacza to, że na milion zamówionych rzędów pecetów mamy również 3 miliony flag w tabeli faktów.

Zmniejszanie rozmiaru tabeli faktów

Moglibyśmy przenieść je do tabeli wymiarów i połączyć tylko z identyfikatorem modelu, aby usunąć 3 miliony flag z tabeli faktów. Aby to zrobić, możemy zrobić oddzielną tabelę dla każdej z tych flag i będzie działać. Ale ten proces skomplikuje model danych, w którym zwykle chcesz uniknąć tabel jednokolumnowych.

Idealnym rozwiązaniem jest użycie wymiaru śmieciowego , w którym masz kilka flag o niskiej liczności, które są ze sobą powiązane w ogólny sposób. Wszystkie one są powiązane z atrybutami komputerów, które budujemy, ale nie w bezpośredni sposób, jak normalnie w przypadku określonej tabeli wymiarów.

Przegląd problemu użytkownika forum

Przyjrzyjmy się konkretnej aplikacji, która została opublikowana na forum. Członek chciał utworzyć dwa różne pola, jedno dla Zatrzymany i jeden dla Aktywny . Jeśli klient dokonał transakcji w ciągu ostatnich 45 dni, zostanie ona oznaczona jako aktywna; w przeciwnym razie zostanie oznaczony jako zablokowany.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Członek chciał również innej tabeli wymiarów dla Typu klienta, która jest albo wielozamówieniowym, albo pojedynczym zamówieniem. Jeśli konto miało dwie lub więcej transakcji w dowolnym momencie historii przy użyciu jednego numeru konta, byłoby to uważane za klienta z wieloma zamówieniami. A gdyby mieli tylko jedno zamówienie na dany numer konta, to byłby to klient z jednym zamówieniem.

Więc to są dwie flagi, które chcemy rozwijać. Przejdźmy do usługi LuckyTemplates i dowiedzmy się, jak to zrobić.

Modelowanie danych dla wymiaru śmieci

Przyjrzyjmy się modelowi danych. To naprawdę prosty model danych. Mamy rozszerzoną tabelę dat i tabelę transakcji .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Nasza tabela transakcji zawiera tylko trzy pola: numer konta , datę faktury i wielkość sprzedaży .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Ogólnie rzecz biorąc, jeśli uda nam się przesunąć transformację bliżej źródła, zrobimy to. Nie jest to dynamiczne w trakcie sesji raportowania, więc nie musimy tego robić w języku DAX .

Powinniśmy to robić albo w Power Query, albo w hurtowni danych/SQL, jeśli mamy taką opcję. Ale na razie załóżmy, że nie i że robimy to tylko w power query .

Identyfikacja typu klienta dla wymiaru śmieci

Pierwszą rzeczą, którą zrobimy, jest ustalenie typu klienta, czy jest to transakcja z jednym zleceniem, czy z wieloma zamówieniami. Użyjemy Group By , Count i Count Rows .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Następnie dodaj wszystkie dane i wykonaj operację Wszystkie wiersze , abyśmy zwrócili nie zagregowaną tabelę, ale tabelę początkową z liczbą wierszy w każdym wierszu.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Przyjrzyjmy się wynikowi i rozwińmy go.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Możemy dodać niestandardową kolumnę i nazwać ją Typ klienta , a następnie utworzyć instrukcję IF. Oświadczenie jest takie, że jeśli Count jest równe 1, to jest to pojedyncze zamówienie; w przeciwnym razie jest to multi-order.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Po prostu zmienimy kolumnę na typ tekstowy. Teraz mamy jeden z naszych dwóch wymiarów ustawiony w tabeli faktów.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Skończmy drugą tabelę wymiarów. W tym przypadku, jeśli ostatnie zamówienie ma mniej niż 45 dni od dzisiejszej daty, klient jest postrzegany jako aktywny. Jeśli nie ma zamówienia w ciągu 45 dni od dzisiaj, klient jest nieaktywny.

Dodamy kolumnę niestandardową i nazwiemy ją Today . Następnie dodaj DateTime.LocalNow , aby podać nam aktualną datę i godzinę, a następnie Date.From , aby podać nam tylko część daty.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Zmieńmy to na typ danych daty, a następnie przenieśmy kolumnę na początek.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Istnieje prosty sposób na utworzenie odejmowania między dwiema kolumnami dat. Po prostu zaznacz te dwie daty, kliknij Daty na wstążce, a następnie kliknij Odejmij dni .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

To da ci różnicę między tymi dwiema datami pod względem liczby dni. Nazwijmy tę nową kolumnę Dni przed dniem dzisiejszym.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Następnym krokiem jest znalezienie minimalnej liczby dni poprzedzających dzisiejszy dzień, co oznacza ostatnie zamówienie dla każdego numeru konta. Jeśli ta liczba jest mniejsza lub równa 45, jest aktywna.

Zróbmy kolejne Group By , następnie Advanced , a następnie Account Number .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Ponownie użyjemy All Data dla nowej nazwy kolumny i All Rows dla operacji.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Tym razem dodamy minimalną liczbę dni pomiędzy z minimalną operacją i liczbę dni poprzedzających dzisiaj jako kolumnę. To da nam najnowsze zamówienie.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Następnie rozwijamy Wszystkie dane i usuwamy Numer konta .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Gdy to rozwiniemy, będziemy mieć minimalne dni między numerami kont.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Na koniec dodamy kolejną kolumnę niestandardową i nazwiemy ją Czas klienta . Umieścimy parametr „co, jeśli”, gdzie jeśli nasza minimalna liczba dni pomiędzy jest mniejsza lub równa 45, to jest aktywna lub zablokowana .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Usuwanie niepotrzebnych kolumn

Ponieważ mamy teraz wiele kolumn pomocniczych, kliknijmy Wybierz kolumny i usuńmy te, których nie potrzebujemy.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Usuniemy kolumny Count , Today , Days Before to Today i Min Days Between . Mamy teraz tylko oryginalną tabelę faktów oraz kolumny Typ klienta i Czas klienta .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Zamiast trzymać je w tabeli faktów, skopiujmy tę tabelę.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Zduplikowaną tabelę nazwiemy Account Flags .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Wróćmy do tabeli Transakcje i usuńmy pola Client Type i Client Timing .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Mamy teraz oryginalną tabelę faktów i tabelę Flagi kont.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

W przypadku tabeli Flagi kont nie potrzebujemy pól Typ klienta i Czas klienta , więc je usuwamy. Po prostu podświetlamy wszystkie te pola, usuwamy wiersze i usuwamy duplikaty.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Mamy teraz naszą tabelę wymiarów śmieci. Pozostało tylko nacisnąć Zamknij i zastosuj . Następnym krokiem jest połączenie Numeru Konta z naszej tabeli Flagi Konta z Numerem Konta w naszej tabeli Transakcje .

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Mamy relację jeden-do-wielu między tabelą Transactions (która jest naszą tabelą faktów) a tabelą Account Flags (która jest naszą tabelą wymiarów śmieci).


Budowanie relacji modelu danych w usłudze LuckyTemplates
Modelowanie danych w usłudze LuckyTemplates: wskazówki i najlepsze praktyki

Wniosek

Upuśćmy wymiary Czas klienta i Typ klienta na nasze płótno i przekształćmy je w fragmentatory. Możemy teraz zrobić dokładnie to, co członek chciał zrobić na początku, czyli wyciąć na podstawie tych atrybutów.

Jeśli klikniemy na Multi-Order, pozostawi nas tylko z tymi, które mają wiele zamówień, a jeśli wybierzemy Single-Order, pozostawi nas z tymi, które mają jeden zakup.

Wymiar śmieci: co to jest i dlaczego to nic innego jak śmieci

Podsumowując, to jest w zasadzie wymiar śmieciowy i sposób jego tworzenia. Jest to bardzo przydatna technika, jeśli masz kilka różnych flag o niskiej liczności, które chcesz skutecznie włączyć do swojego modelu danych.

Technika grupowania według wszystkich rzędów jest niezwykle przydatna do tworzenia tych śmieciowych wymiarów. Mam nadzieję, że uznałeś to za pomocne i jak zawsze.

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.