Funkcja DAX STATYSTYKI KOLUMNOWE W usłudze LuckyTemplates

Funkcja DAX STATYSTYKI KOLUMNOWE W usłudze LuckyTemplates

Chciałbym dalej badać dynamiczne zastosowania funkcji języka DAX COLUMNSTATISTICS() — nowej, prawie całkowicie nieudokumentowanej funkcji języka DAX dodanej do usługi LuckyTemplates w sierpniu 2021 r., która ma kilka bardzo unikalnych aspektów, z którymi moim zdaniem warto się zapoznać . Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

Przeprowadziłem wiele eksperymentów i dowiedziałem się kilku naprawdę interesujących nowych rzeczy o tym, jak działa ta funkcja i co można z nią zrobić. W moim pierwszym blogu o tej funkcji mówiłem o niektórych zastosowaniach statycznych. Dzisiaj opowiem o kilku naprawdę niesamowitych, dynamicznych zastosowaniach tej funkcji w sposób, w którym nawet technologia IntelliSense nie jest jeszcze aktualna.

Spis treści

Jak działa funkcja COLUMNSTATISTICS języka DAX

Dla każdej tabeli i pola w modelu danych COLUMNSTATISTICS tworzy tabelę z sześcioma dodatkowymi polami, które zawierają nazwę tabeli, nazwę kolumny, wartości minimalne i maksymalne dla kolumny, liczność i maksymalną długość. To nie wydaje się dużo danych, ale jest wiele rzeczy, które możesz z nimi zrobić.

Funkcja DAX STATYSTYKI KOLUMNOWE W usłudze LuckyTemplates

Dane, których obecnie używam, to tylko zestaw danych ćwiczeniowych dla zewnętrznych narzędzi LuckyTemplates. Jest to stosunkowo prosty model danych z pięcioma tabelami wymiarów, tabelą faktów i tabelą miar . Taki model nie jest trudny do śledzenia, ale złożony model wymaga znacznie bardziej złożonego monitorowania zestawu danych.

Metadane złożonego zestawu danych stają się o wiele ważniejsze pod względem liczności, czyli liczby unikalnych wartości w polu. Ma to duży wpływ na rozmiar Twojego modelu, a także potencjalnie na szybkość obróbki.

Ponadto podczas tworzenia modelu warto znać nie tylko liczbę tabel, ale także zakres dat tych tabel. Tworząc tabelę Daty, upewnij się, że w tabeli faktów uwzględniono pełny zakres danych.

W tym przykładzie spróbujmy dodać tabelę do tego modelu danych, nad którym pracuję. W Power Query przejdziemy do New Source , a następnie Blank Query . Następnie przejdziemy do Edytora zaawansowanego i wkleję funkcję o nazwie List.Dates . Użyjemy tego do stworzenia tabeli o liczności 10 000, czyli 10 000 unikalnych dat.

Zwróci listę zawierającą 10 000 pozycji, którą możemy po prostu przekonwertować na tabelę, a następnie zmienić jej nazwę.

Możemy zmienić pole do tej pory. A jeśli klikniemy Zamknij i zastosuj, zobaczymy, że nasza inteligentna narracja będzie aktualizować się dynamicznie, bez konieczności odświeżania całego modelu (jak to robiliśmy w przeszłości).

Powodem, dla którego jest to w pełni dynamiczne, jest to, że robimy to wszystko za pomocą miar. Co ciekawe, pokazuje wiele błędów, a funkcja jest tak nowa, że ​​IntelliSense nie wykrywa jej poprawnie, ale faktycznie działa.

Przejdźmy do Edytora tabelarycznego 3, który moim zdaniem jest najlepszym sposobem na sprawdzenie, co tak naprawdę robią złożone miary języka DAX.

Pamiętaj, że zapytanie języka DAX zwraca tabele, a nie skalery. Jeśli więc weźmiemy tę miarę i skopiujemy ją do zapytania DAX , wyświetli się błąd, ponieważ Wynik tutaj nadal jest skalowaniem. Możemy zastosować metodę debugowania polegającą na zastąpieniu tego wyniku RETURN poszczególnymi składnikami miary.

W tym przypadku zastąpimy go ColStats , a to, co zrobiliśmy na górze, to po prostu umieszczenie funkcji COLUMNSTATISTICS języka DAX w zmiennej. Dzięki temu otrzymujemy dokładnie to, czego oczekujemy, czyli standardową tabelę statystyk kolumnowych.

A teraz chcemy po prostu spojrzeć na kolumnę Nazwa tabeli i chcemy wyciągnąć z niej odrębne wartości i policzyć je. To będzie liczba tabel w naszym modelu danych.

Najpierw wybierzemy kolumny w naszej tabeli ColStats i po prostu zwrócimy pole nazwy tej tabeli. Zwykle w mierze DAX lub zapytaniu DAX chcesz zwrócić nazwę pola z nazwą tabeli przed nią. Ale w tym przypadku nie wiemy, do czego odnosi się odpowiednia nazwa tabeli, ponieważ istnieje ona tylko wirtualnie. Wydaje się, że nie akceptuje nazwy zmiennej jako nazwy tabeli.

Więc w tym przypadku musimy pozostać przy czymś, co wygląda jak miara, ale w rzeczywistości jest to odwołanie do kolumny bez odwołania do tabeli przed nim. I to nadal działa, mimo że jest mylące w nomenklaturze. Teraz, jeśli zastąpimy tę instrukcję RETURN naszym TabCol , otrzymamy dokładnie to, czego oczekujemy, czyli pole tabel modelu.

A dla Wyniku po prostu liczymy różne kolumny tabeli. Jeśli więc zastąpimy to DISTINCT(TabsCol) , otrzymamy nasze siedem tabel.

Teraz spójrzmy na najwyższą liczność w tabeli najwyższej liczności i zobaczmy, jak je otrzymaliśmy. W rzeczywistości jest to ważny wzorzec, którego możesz użyć do wielu różnych rzeczy, gdy szukasz, nie tylko maksymalnej liczby, ale maksymalnego atrybutu powiązanego z tą liczbą.

Przyjrzyjmy się więc MaxCardinality . Mimo że jest to skaler, możemy przekształcić go w tabelę z jedną komórką, umieszczając wokół niego nawiasy kwadratowe. A jeśli trafimy pięć, zobaczymy, że jest to liczność 10 000.

Więc teraz pytanie brzmi, jak to wziąć i zwrócić tabelę powiązaną z tą licznością.

Aby to zrobić, używamy tego bardzo popularnego wzorca za pomocą . Następnie kopiujemy go do naszej instrukcji RETURN i otrzymamy wiersz, którego oczekiwaliśmy, czyli kolumnę 10 000 dat. Zamiast jednego rzędu (bo to TOPN), dostajemy dwa, bo jest remis.

ColStats tworzy również dla każdej tabeli indeks w ukrytym wierszu indeksu o nazwie RowNumber , który jest unikalnym identyfikatorem dla każdego wiersza tabeli. Tak więc MaxCardinality zawsze będzie odzwierciedlane przez RowNumber, jeśli jest to unikalny identyfikator.

Tak więc nie ma znaczenia, że ​​mamy dwa wiersze, ponieważ to, na co patrzymy, to Maksimum nazwy tabeli. A to maksimum jest tylko po to, aby zwrócić pewną wartość, która w przeciwnym razie byłaby po prostu nagą kolumną. Ale musimy to obejść pewną agregacją iw tym przypadku używamy .

Następnie, jeśli umieścimy MaxCardinality w naszej instrukcji RETURN i umieścimy ją w nawiasach, aby zwrócić tabelę, a nie skaler, zwróci ona wartość Test.

Ten wzorzec TOPN DAX jest naprawdę dobrym wzorcem do zapamiętania, gdy chcesz zasadniczo określić wartość maksymalną lub minimalną, a następnie zwrócić atrybut powiązany z tą wartością minimalną lub maksymalną.


Optymalizowanie formuł usługi LuckyTemplates przy użyciu zaawansowanej
analizy miar języka DAX DAX: podział długich miar języka DAX
Miary języka DAX w usłudze LuckyTemplates przy użyciu rozgałęzień miar

Wniosek

Przedstawiłem ogólne podejście i kontekst, które możemy wykorzystać, aby jak najlepiej wykorzystać funkcję COLUMNSTATISTICS języka DAX w dynamiczny sposób. Będąc w stanie śledzić to dynamicznie w kategoriach złożonego modelu, myślę, że ta funkcja ma ogromną wartość.

Im więcej eksperymentujemy z funkcją COLUMNSTATISTICS i jej zdolnością do dynamicznego przetwarzania metadanych w języku DAX, myślę, że znajdziemy ciekawsze zastosowania. Jeśli więc znalazłeś już kilka interesujących zastosowań dla tej funkcji języka DAX, daj mi znać w komentarzach poniżej.

Wszystkiego najlepszego!


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.

Pomysły na materializację pamięci podręcznych danych w DAX Studio

Pomysły na materializację pamięci podręcznych danych w DAX Studio

W tym samouczku omówiono idee materializacji pamięci podręcznych danych oraz ich wpływ na wydajność języka DAX w dostarczaniu wyników.

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Jeśli do tej pory nadal korzystasz z programu Excel, jest to najlepszy moment, aby zacząć korzystać z usługi LuckyTemplates na potrzeby raportowania biznesowego.

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć