Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

W tym wpisie na blogu zajmiemy się niektórymi kłopotliwymi problemami z inteligencją czasową, w szczególności problemami powodowanymi przez szczegółowość tygodnia i problemami, które mogą być spowodowane nieregularną liczbą tygodni w roku. Użyjemy przesunięć, aby uzyskać dokładną analizę czasu w języku DAX.

Mamy dziś dla Was ciekawy scenariusz. Pojawiło się to kilka razy ostatnio na forum LuckyTemplates. Ludzie chcieli zrobić wizualizację (którą może być wykres liniowy lub słupkowy) i zmieniać ją dynamicznie w dniu rozpoczęcia. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

W tym przypadku wykorzystaliśmy ten sam zestaw danych, który opracowaliśmy dla średniej ceny spot za baryłkę ropy . Zamiast zawsze zaczynać od początku w styczniu, chcieliśmy mieć możliwość kliknięcia elementu graficznego, zmiany go na inną datę rozpoczęcia, ale zawsze pokazywania danych z jednego roku.

Spis treści

Przykładowe scenariusze analizy czasowej w języku DAX

Istnieje wiele powodów, dla których możesz chcieć wykonać tę technikę. Możesz tego użyć, jeśli masz dane, które są stale korygowane pod względem sposobu ich obliczania. Możesz chcieć pokazać tylko dane z okresu korekty do przodu.

Innym powodem użycia tego jest to, że chcesz to zwizualizować w animowany sposób. Zasadniczo pobierze to twoje dane i wyświetli je dynamicznie po kliknięciu dostępu do gry.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Na tej wizualizacji możemy zmieniać datę początkową miesiąc po miesiącu, aby pokazać, jak zmienia się ona w okresie 12 miesięcy. To interesująca i przydatna wizualizacja dla różnych przypadków biznesowych, ale teoretycznie przedstawia również szereg kluczowych zagadnień związanych z językiem DAX i modelowaniem danych.

Przejdźmy do usługi LuckyTemplates i przyjrzyjmy się najpierw naszemu modelowi danych. Jest to naprawdę prosty model danych z rozszerzoną tabelą dat i tabelą cen spot powiązaną z datami.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Używanie przesunięć dla analizy czasowej w języku DAX

Jedną z rzeczy, nad którymi będziemy pracować, są przesunięcia . Przesunięcia w rozszerzonej tabeli dat są obliczane dynamicznie. Za każdym razem, gdy raport jest odświeżany lub otwierany, przechodzi przez kod M. Na przykład w przesunięciu miesięcznym przypisuje bieżący miesiąc wartością 0, poprzedni miesiąc wartością -1, a dwa miesiące temu wartość -2. Patrząc w przyszłość, przypisuje następny miesiąc +1, a przez dwa miesiące w przyszłości +2.

Jest to prosta koncepcja, ale niezwykle wydajna, gdy masz do czynienia z analizą czasową w języku DAX i pracujesz z miesiącami , kwartałami i tygodniami . Jeśli nie używasz przesunięcia, czasami powoduje to znaczną złożoność w twoich obliczeniach.

Używanie przesunięć oznacza używanie ciągłej serii liczb, gdzie cofanie się o miesiąc to zawsze -1, a cofanie się o miesiąc do przodu to zawsze +1, niezależnie od tego, w którym miejscu roku się znajdujesz.

Wdrażanie strategii Rubber Duck dla analizy czasowej w języku DAX

W przeszłości mówiłem o gumowym kaczuszku , czyli wypowiadaniu na głos swojej strategii, zanim zaczniesz pisać swój DAX.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Głośno myślę o tym, jak sobie z tym poradzę w kontekście miesięcznym, używając analizy czasowej w języku DAX. Zacząłbym coś na podstawie wybranego roku i miesiąca i wybrałbym te z rozłączonej tabeli, ponieważ jeśli się nad tym zastanowić, co drugi wybór będzie obejmował lata przecinające się (z wyjątkiem stycznia).

Powiedzmy, że chcemy 12 miesięcy począwszy od marca, skończymy na co najmniej dwóch miesiącach w kolejnym roku. Jeśli użyjemy połączonego fragmentatora, możemy filtrować tylko dla tego roku i nie będziemy mogli filtrować do następnego roku.

Zbieranie przesunięć od daty rozpoczęcia

Zróbmy to z połączoną tabelą dla miesiąca i roku. Najpierw musimy zebrać pierwsze przesunięcie, które dotyczy daty początkowej.

A potem chcemy przesunąć to przesunięcie do przodu o 12 miesięcy, a następnie patrzeć tylko na daty, które mieszczą się w tym zestawie przesunięć. Pozwól, że pokażę ci, jak to wygląda w języku DAX.

Obliczanie zakresu miesięcznego

To jest nasza miara dla Miesięcznego Miesięcznego Zakresu , w którym wybieramy nasz rok (który zebraliśmy z tabeli odłączonych lat) i nasz miesiąc (który zebraliśmy z tabeli odłączonych miesięcy).

Mamy również ten inny parametr, w którym, jeśli nie dokonano żadnego wyboru, domyślnym ustawieniem będzie styczeń. Ten parametr służy głównie do celów debugowania.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Obliczanie przesunięć miesiąca początkowego i końcowego

Przyjrzyjmy się przesunięciu miesiąca początkowego, obliczając przesunięcie MAX. Usuwamy wszystkie filtry z tabeli dat i filtrujemy do wybranego miesiąca i wybranego roku. Dla każdego miesiąca powinno istnieć tylko jedno przesunięcie, które odpowiada temu miesiącowi i rokowi.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Od tego momentu możemy wziąć przesunięcie miesiąca końcowego , które jest po prostu przesunięciem miesiąca początkowego + 11 miesięcy.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

A następnie patrzymy na każdą wybraną datę i ustalamy, czy mieści się ona w przesunięciu miesiąca początkowego i przesunięciu miesiąca końcowego. jeśli mieści się w tym okresie, dajemy mu 1, a jeśli nie, dajemy mu 0.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Jeśli wrócimy do widoku miesięcznego w naszej wizualizacji, zobaczymy wizualizację Within Range , którą ustawiliśmy jako równą jeden. Więc pokazuje tylko te miesiące w ramach przesunięcia od początku do końca. Na przykład, jeśli klikniemy na luty, zobaczymy luty do stycznia.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Obliczanie zakresu tygodniowego

Zobaczmy, jak to wygląda z tygodniowego punktu widzenia. Wizualizacja początkowo zaczyna się dobrze i trwa od tygodnia 1 do tygodnia 52. Jak dotąd, tak dobrze.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Ale jeśli klikniemy na inne lata we fragmentatorze roku, zobaczymy 52. ​​tydzień, podczas gdy niektóre mają 53. tydzień, co stwarza wiele problemów. Na tym przykładzie widać, że problem zaczyna się objawiać.

Mamy okres początkowy roku 2020 i tydzień 15 , ale okresem końcowym jest rok 2021 i tydzień 13 zamiast roku 2021 i tygodnia 14 .

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Jeśli wrócimy do tygodnia 1, zobaczymy, że zaczyna się dobrze, ale kończy w 52. tygodniu. Jeśli spojrzymy tutaj na obliczenia 53. tygodnia, maksymalna liczba tygodni w 2020 i 2021 r. to 53 tygodnie. To nie zadziała w przypadku tygodniowej szczegółowości.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Zobaczmy, co możemy zrobić, aby to zadziałało. Musimy poprawić obliczenia DAX tutaj w tej części:

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Dzieje się tak, ponieważ w niektórych przypadkach liczba 51 jest poprawna, gdy w roku są tylko 52 tygodnie, ale w przypadku roku, w którym są 53 tygodnie, pominie ten ostatni okres. Dokładnie to widzieliśmy w dynamicznej wizualizacji tygodni, gdzie obliczenia usunęły ostatni okres w latach 2020 i 2021.

Aby to naprawić, przechodzimy do miary „Wewnątrz zakresu tygodniowego błędu ”, która w rzeczywistości wygląda na prostszą niż wcześniejsza miara. Mieliśmy początkową miarę przesunięcia i obliczyliśmy maksymalne przesunięcie. Następnie usunęliśmy filtr z dat, a następnie nałożyliśmy filtr na wybrany tydzień i wybrany rok z założeniem, że doprowadzi to do prawidłowego przesunięcia.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Ale to nie działa, ponieważ nie ma znaczenia, czy używasz przesunięcia maksymalnego, czy minimalnego. Wszystko, co robimy, to zawijamy agregator, aby nie umieszczać nagiej kolumny w instrukcji CALCULATE.

Ale jeśli wrócimy tutaj do ISO WeekNumber , zobaczymy, że rok i numer tygodnia nie określają jednoznacznie tygodniowego przesunięcia w tym pierwszym okresie.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Wymyśliłem kuloodporny sposób na zrobienie tego. Możesz użyć MIN, ale bardziej sensowne jest utworzenie miary przesunięcia Tydzień 1 . Aby uzyskać przesunięcie tygodnia 1, mamy do czynienia z tygodniem 2, ponieważ nigdy nie jest dzielony. Niezależnie od tego, czy rok ma 52, czy 53 tygodnie, tydzień 2 pozostaje nienaruszony.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

W tym obliczeniu filtrujemy do tygodnia 2, aby uzyskać przesunięcie. A kiedy już otrzymamy przesunięcie w drugim tygodniu, po prostu odejmiemy od niego jeden. To jednoznacznie da nam przesunięcie tygodnia 1. To ostatecznie rozwiąże nasz problem.

Obliczanie tygodniowego zakresu w zakresie

A następnie wracamy do naszej tygodniowej miary w obrębie zakresu i piszemy oświadczenie JEŻELI, w którym jeśli liczba zbiorów dotyczy tygodnia 1, obliczamy przesunięcie tygodnia pierwszego. Jeśli nie jest to tydzień 1, po prostu obliczamy przesunięcie tygodnia początkowego, tak jak to zrobiliśmy w poprzednim obliczeniu miesięcznym.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

A wtedy przesunięcie tygodnia końcowego będzie przesunięciem tygodnia początkowego + maksymalnym numerem tygodnia, który może wynosić 52 lub 53. Następnie po prostu odejmujemy 1, aby nie liczyć podwójnie przesunięcia początkowego.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Możemy wykonać tę samą konstrukcję, której użyliśmy do filtrowania tygodni dla zakresu miesięcznego, gdzie wszystko, co mieści się między przesunięciem początkowym a końcowym, otrzymuje 1, a wszystko, co nie otrzymuje 0.

Następnie umieścimy miarę Weekly Within Range w okienku filtrowania. Wszystko się sprawdza i wygląda dokładnie tak, jak należy.

Analiza czasowa w języku DAX: jak dynamicznie wybierać okres początkowy

Możemy kliknąć oś odtwarzania i uruchomić szczegółowość tygodnia. Widzimy, że działa poprawnie, podobnie jak w kontekście miesiąca.

Wniosek

To dość szczegółowe omówienie analizy czasu w języku DAX, w którym omówiliśmy, jak rozwiązać niektóre problemy związane z numerami tygodni. Mam nadzieję, że ten samouczek okazał się pomocny i dostarczył ci dodatkowych narzędzi w zestawie narzędzi, gdy masz do czynienia z problematyczną sytuacją tygodniową.

Jeśli podobały Ci się treści omówione w tym samouczku, nie zapomnij zasubskrybować kanału telewizyjnego LuckyTemplates. Cały czas publikujemy ogromną ilość treści ode mnie i wielu twórców treści, których celem jest ulepszenie sposobu, w jaki korzystasz z usługi LuckyTemplates i Power Platform.

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.