Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Tworzenie kalendarza dni wolnych w usłudze LuckyTemplates ma kluczowe znaczenie dla wielu analiz czasowych. W tym samouczku pokażę, jak obliczyć określone daty świąt za pomocą miar języka DAX. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

Ten przykład pochodzi z jednej z inicjatyw o nazwie Problem tygodnia, w ramach której co miesiąc bierzemy rzeczywisty problem DAX lub Power Query i szczegółowo go rozbijamy.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Użyłem techniki zwanej Rubber Duck Debugging. Jest zwykle używany do debugowania, ale uważam, że jest również bardzo cenny przy opracowywaniu początkowej struktury, której zamierzasz użyć do rozwiązania złożonego problemu, takiego jak w usłudze LuckyTemplates.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Zasadniczo polega to po prostu na użyciu gumowej kaczki lub osoby, z którą rozmawiasz, i wypowiedzeniu na głos rozwiązania, które sobie wyobrażasz, oraz opracowaniu planu ataku na problem.

Zwykły akt wypowiadania się, który często pomaga rozwiązać problem. W niektórych przypadkach w sytuacji debugowania pozwala uświadomić sobie, co robisz, czy ma to sens, i pomaga znaleźć sposób, aby to naprawić, rozwiązując problem.

Poniżej znajduje się rzeczywisty problem DAX dla tego konkretnego wyzwania. Mamy tutaj tabelę z 10 świętami z miesiącem i dniem. Niektóre dni są dniami szczególnymi, a niektóre względnymi. Musimy wymyślić miarę Holiday Date i Celebrated On.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Aby to zrobić, musimy przeanalizować pole Dzień na dwa komponenty. Pierwsza analiza to zdarzenie (trzecie, ostatnie, pierwsze, drugie), a druga to dzień (poniedziałek, czwartek). Są to dwie krytyczne informacje, które musimy rozdzielić.

Spis treści

Obliczanie określonych dat w kalendarzu świąt usługi LuckyTemplates

Normalnie zrobiłbym to w dodatku Power Query poprzez podział według ograniczników, ale ponieważ robimy to w języku DAX, będziemy musieli zrobić to w inny sposób. (Pamiętaj, że w tym wyzwaniu nie wolno nam używać dodatku Power Query).

Musimy obliczyć minimalną i maksymalną datę dla podanej nazwy roku, miesiąca i dnia. W tym przypadku możemy na przykład powiedzieć, że w 2027 r. mamy styczeń i trzeci poniedziałek. Kiedy już uzyskamy ten minimalny dzień dla danego miesiąca, możemy do niego dodać siedem dni, aby dostać się do drugiego poniedziałku, 14 dni, aby przejść do trzeciego poniedziałku i 21 dni, aby przejść do czwartego poniedziałku.

Inną techniką, którą chcę się z tobą podzielić, związaną z tym wyzwaniem, jest to, co nazywam budowaniem w częściach podczas tworzenia miary. Uważam to za bardzo pomocne w złożonej mierze, w której jeśli masz wiele zmiennych, masz wiele komponentów do zbudowania.

To, co zawsze robię, to na końcu zmienna wynikowa ( VAR Result ) i moja ostatnia instrukcja, która jest po prostu Return Result . Dzięki temu naprawdę łatwo jest wrócić i przetestować zmienne, które zbudowałem. Mogę przejść, śledzić i rozwiązywać go w częściach.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Ostatnią techniką, którą chcę się z wami podzielić, jest to, co nazywam wyszukiwaniem nieznanych funkcji. Na przykład, jeśli nie wiem, jakiej funkcji użyć w tym wyzwaniu związanym z kalendarzem świąt usługi LuckyTemplates, przejdę do karty Narzędzia zewnętrzne i przejdę do przewodnika SQLBI DAX .

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Ma naprawdę fajną funkcję o nazwie Grupy (po lewej stronie), gdzie funkcje są pogrupowane według typu. I tak, jeśli myślę na przykład o przeanalizowaniu ciągu tekstowego, mogę poszukać Text functions .

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Zapewnia wszystkie funkcje tekstowe dostępne w języku DAX. To świetny sposób na szybkie znalezienie funkcji języka DAX potrzebnej do pomiaru.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Miary języka DAX dla kalendarza świąt usługi LuckyTemplates

Dla miary Holiday Date stworzyłem tę serię s , zbierając daty z fragmentatora, miesiąc świąteczny, numer miesiąca i dzień z tabeli Date.  

Następnie mam długość z tego wybranego dnia za pomocą funkcji długości ( ). W tym przypadku zwrócił tekst, więc musiałem zawinąć go w , aby zmienić ten tekst na wartość liczbową.

A potem użyłem funkcji , aby znaleźć pozycję spacji i zawinąłem ją w WARTOŚĆ, ale mówiąc, wyszukaj spację w wybranym dniu, zaczynając od pozycji pierwszej i zwracając zero, jeśli nie znajdę tam tego ciągu.

CharsBeforeSpace (znaki przed spacją) to po prostu SpacePosition. Liczba CharsAfterSpace (znaków po spacji) to po prostu długość ( SelDayLen ) łańcucha minus pozycja spacji. Z tego możemy zrobić FirstParse i SecondParse .

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

W tym momencie mamy teraz dwie zmienne, jedną reprezentującą zdarzenie, a drugą reprezentującą dzień.

A potem mamy podstawową funkcję ( Calc1st ), w której usuwamy filtr z tabeli dat. Następnie stosujemy filtry wybranego roku z fragmentatora, nazwę miesiąca, a następnie dzień tygodnia z drugiej analizy, którą wykonaliśmy.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Podobnie robimy to samo dla ostatniego obliczenia ( VAR CalcLast ).

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Kiedy już to wszystko mamy, przechodzimy do instrukcji , a ostatnią częścią jest RETURN Result.

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX

Na koniec chcę przeprowadzić Cię przez pomiar Celebrated On jako dodatkową premię z wyzwania. To jest po prostu prosta , w której wziąłem datę świąt, którą obliczyliśmy w poprzednim pomiarze, przeszedłem do tabeli Daty i wyszukałem nazwę dnia tygodnia. A potem po prostu zrobiłem instrukcję SWITCH , w której wzięliśmy ten wynik DayLookup . I na koniec kończę to RETURN DateAdjust .

Kalendarz świąt usługi LuckyTemplates — Oblicz datę W/DAX


Tworzenie tabeli kalendarza dla dni wolnych w usłudze LuckyTemplates
Niestandardowe kalendarze usługi LuckyTemplates: obliczanie dla zmiany miesiąca na miesiąc — 445 kalendarzy
Porównanie czasu dla niestandardowych tabel dat w usłudze LuckyTemplates

Wniosek

To wyzwanie kalendarza świąt LuckyTemplates, jak wspomniałem, jest prawdziwym problemem. Rozwiązanie, które wymyśliłem jest dość złożone, ale naprawdę skuteczne w obliczaniu konkretnych dat świąt.

Mam nadzieję, że wiele się nauczyłeś z tego samouczka. Zapoznaj się z pełnym samouczkiem wideo, aby uzyskać bardziej szczegółowe objaśnienie miar DAX.

Dzięki!

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.