Czym jest self w Pythonie: przykłady z życia wzięte
Czym jest self w Pythonie: przykłady z życia wzięte
W tym samouczku omówiono materializację pamięci podręcznych danych w DAX Studio. Ten post pokaże, jak wpływa to na obliczenia podczas generowania wyników za pomocą zapytania. Dowiesz się, która materializacja jest lepsza, aby zmaksymalizować wydajność języka DAX.
Istnieją dwie koncepcje materializacji: wczesna materializacja i późna materializacja .
Spis treści
Wczesna materializacja
Wczesna materializacja ma miejsce, gdy liczba zmaterializowanych wierszy jest większa niż liczba wierszy potrzebnych do wyjścia.
Jeśli dane wyjściowe to tabela według roku kalendarzowego i masz dane z pięciu lat, wprowadzanie wielu zmaterializowanych wierszy nie jest konieczne. Najlepszą praktyką jest, aby liczba zmaterializowanych wierszy była równa liczbie potrzebnych wierszy. Jednak nie zawsze tak jest, ponieważ zależy to od złożoności języka DAX i konfiguracji danych.
Zawsze pamiętaj, że dane składają się z kolumn. Kiedy więc silnik formuł musi pracować na tabeli, kolumny są ponownie łączone w formacie tabeli, co jest materializacją. W pomyśle dotyczącym wczesnej materializacji mechanizm przechowywania wysyła pamięć podręczną danych do mechanizmu formuły. Silnik formuł następnie działa na tej pamięci podręcznej i wykonuje złożone procesy.
Wczesna materializacja może być spowodowana złożonymi sprzężeniami lub relacjami wiele-do-wielu w modelach danych. Może to być również spowodowane posiadaniem złożonych filtrów lub iteratorów.
Nie jest źle mieć złożone środki; wystarczy je odpowiednio skonfigurować, aby w jak największym stopniu wykorzystać silnik pamięci masowej.
Późna materializacja
Późna materializacja ma miejsce, gdy liczba zmaterializowanych wierszy jest równa lub zbliżona do liczby wierszy potrzebnych do uzyskania wyniku.
Silnik magazynu wykonuje prawie całą pracę, nie pozostawiając nic silnikowi formuły. Dzięki temu cała kalkulacja jest szybsza.
Oto przykładowe zapytania dotyczące wczesnej i późnej materializacji:
Przed uruchomieniem tych zapytań pamiętaj o wyczyszczeniu pamięci podręcznej. Spowoduje to, że zapytania będą uruchamiane w zimnej pamięci podręcznej. Jeśli uruchomisz swój DAX bez czyszczenia pamięci podręcznej, otrzymasz następujący wynik:
Całkowity czas wykonania to tylko 1861 milisekund, ponieważ korzystał już z pamięci podręcznej. Dlatego zawsze czyść pamięć podręczną przed uruchomieniem zapytań.
Jeśli uruchomisz zapytanie o wczesną materializację, zobaczysz, że całkowity czas, jaki to zajęło, to 9485 milisekund. Wygenerował jedną pamięć podręczną danych i jednowierszowe dane wyjściowe, ale zwrócił 25 milionów wierszy.
Nie musisz materializować 25 milionów wierszy, aby uzyskać wynik w jednym wierszu, ponieważ wymaga to czasu i spowalnia wydajność języka DAX.
Jeśli uruchomisz zapytanie Late Materialization, zobaczysz, że całe obliczenie zajęło tylko 1340 milisekund. Wygenerował również 2 pamięci podręczne danych, z których każda zwracała 5003 wierszy.
Jeśli spojrzysz na fizyczny plan zapytań, zobaczysz 5000 wierszy. Nie mają równej liczby rzędów. Wynik chronometrażu serwera będzie czasami miał niewielką rozbieżność z dokładną liczbą wierszy w planie zapytań.
Tak więc z pracy na jednej pamięci podręcznej danych z 25 milionami wierszy masz teraz dwie pamięci podręczne danych z 5003 wierszami. Dlatego praca z późniejszą materializacją daje szybsze rezultaty niż wczesna materializacja.
Wewnątrz każdego zapytania dotyczącego materializacji
Wystarczy spojrzeć na zapytanie i już widać, że późniejsza materializacja jest szybsza. Zapytanie o wczesną materializację zlicza wiersze tabeli zbiorczej.
Tabela, która jest podsumowana i zmaterializowana, jest większa niż tylko wykonanie stole , co robi zapytanie o późną materializację.
Jeśli zapytanie działa wolno, zacznij od sprawdzenia, ile wierszy jest pobieranych w zapytaniu i ile jest potrzebnych do uzyskania danych wyjściowych. Możesz także przejść do Planu zapytań logicznych i śledzić przepływ pracy wykonywanej w ramach obliczeń.
Co to jest DAX Studio w LuckyTemplates Desktop
Samouczek DAX: Kontekst i aparat obliczeniowy
Pomiar w LuckyTemplates: porady i techniki optymalizacji
Wniosek
Materializacja ma miejsce, gdy zapytania pobierają kolumny lub wiersze z modelu danych. Ten proces zachodzi naturalnie, gdy wyszukiwarka pobiera dane z modelu danych w celu dostarczenia wyników dla zapytania.
Mogą jednak wystąpić problemy, jeśli Twój język DAX pobiera zbyt wiele wierszy, niż potrzeba do uzyskania wyniku. Ten problem można rozwiązać, upraszczając język DAX w celu wykonywania określonych procesów.
Czym jest self w Pythonie: przykłady z życia wzięte
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.
Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.
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.
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.
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ł.
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.
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.
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ć