Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

W tym samouczku omówimy różnicę w działaniu indeksowania danych w relacyjnej bazie danych w porównaniu z Vertipaq.

Relacyjne bazy danych przechowują dane wiersz po wierszu. Z drugiej strony Vertipaq robi to kolumna po kolumnie.

Zobaczmy, jak te dwa sposoby przechowywania i indeksowania danych mogą wpłynąć na proces opracowywania raportów, zwłaszcza podczas uruchamiania zapytań.

Spis treści

Indeksowanie danych według wiersza

Przechowywanie danych wiersz po wierszu to tradycyjny sposób przechowywania danych. Proces ten zajmuje jednak więcej czasu, co wpłynie na wydajność zapytania.

Załóżmy, że mamy tabelę zawierającą Marka, Kolor, Płeć, Ilość i Cenę netto.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jeśli zapiszemy wszystko w tej tabeli w bazie danych, dane będą przechowywane wiersz po wierszu. Dlatego tradycyjna struktura przechowywania danych jest również nazywana magazynem wierszy.

Po pierwsze, w tej samej linii zostaną zapisane nagłówki kolumn znalezione w pierwszym wierszu — Marka, Kolor, Płeć, Ilość i Cena netto. Następnie przechodzi do następnego wiersza, aby zapisać pierwsze elementy w każdej kolumnie — A. Datum, Azure, puste miejsce, 1 i 103,2. To trwa rząd po rzędzie.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jak więc obliczymy SUMĘ przy użyciu tej metody indeksowania danych?

Najpierw zaczyna się od pierwszego wiersza, który zawiera nagłówki kolumn. Następnie przeskakuje do następnego wiersza i przeskakuje przez inne fragmenty danych, aż dojdzie do pierwszej wielkości, którą widzi, czyli 1. Następnie przeskakuje z wiersza do wiersza, przeglądając wszystkie dane zawarte w każdym wierszu i zbiera wszystkie ilości są znaleziskami.

Po odłożeniu wszystkich ilości z każdego wiersza jest to jedyny moment, w którym obliczenia są zakończone.

Prawdopodobnie możesz sobie wyobrazić, jak żmudny jest ten proces, jeśli przygotowujesz raport usługi LuckyTemplates korzystający z połączenia DirectQuery ze źródłem danych SQL. W tym przypadku usługi analityczne przekonwertują kod DAX na język SQL, a następnie zaczną przeglądać strukturę danych wiersz po wierszu.

Indeksowanie danych według kolumny

Aby uniknąć długiego procesu, masz możliwość przechowywania danych kolumna po kolumnie za pośrednictwem Vertipaq, gdy wybierzesz tryb importu.

Gdy używasz magazynu kolumnowego zamiast magazynu wierszy, Marka, Kolor, Płeć, Ilość i Cena netto będą przechowywane w różnych strukturach danych.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Powiedzmy, że chcemy uzyskać SUMA wartości w kolumnie Ilość. Nie będzie potrzeby przechodzenia przez Marka, Kolor i inne dane poza kolumną Ilość. Podczas jednego skanowania odczytuje całą kolumnę Ilość od góry do dołu i sumuje wszystkie wartości.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Z tego powodu zapytania będą wykonywane szybciej niż robienie tego od lewej do prawej.

Porównanie czasu wykonania w prostych zapytaniach

Aby naprawdę zobaczyć ogromną różnicę między magazynem wierszy a magazynem kolumn, wykonajmy kilka zapytań testowych zarówno w SQL, jak i Vertipaq. Czas wykonania powinien nam powiedzieć, jak szybko jeden proces jest porównywany z drugim.

Zacznijmy od prostego zapytania w SQL. Zamierzamy obliczyć wartość SUMA kolumny Ilość w tabeli Sprzedaż.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jak widać, całkowity czas wykonania wynosi 2,2 sekundy.

Przejdźmy teraz do DAX Studio i użyjmy funkcji EVALUATE , aby wykonać to samo zapytanie. Musimy włączyć synchronizację serwera i poczekać na zakończenie śledzenia.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Musimy również upewnić się, że podczas uruchamiania zapytania wybrana jest opcja „Wyczyść pamięć podręczną, a następnie uruchom”.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Po wykonaniu zapytania zobaczysz, że wykonanie tego samego zapytania, które wykonaliśmy wcześniej w SQL, zajmuje tylko 3 milisekundy.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Zestaw wyników powinien być również zgodny zarówno dla SQL, jak i DAX Studio. Jeśli umieścimy je obok siebie, zobaczysz, że zwracamy tę samą wartość.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Możesz spróbować uruchomić zapytanie jeszcze kilka razy, aby zobaczyć, jak spójny jest czas wykonania.

Porównanie czasu wykonania w bardziej skomplikowanych zapytaniach

Tym razem porównajmy czas wykonania w przypadku bardziej skomplikowanych zapytań.

Załóżmy, że chcemy określić SUMĘ ilości sprzedaży dla każdej marki. Aby to zrobić, możemy użyć ponad każdej marki produktu. W niskim kontekście utworzymy również nową tabelę o nazwie Całkowita ilość, w której będziemy dla SUMY Ilości sprzedaży.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jeśli uruchomimy ten kod, zobaczysz, że całkowity czas wykonania wynosi 7 milisekund.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

W tle ten kod faktycznie uruchamia dwa zapytania. Pierwsza pobiera kolumnę Marka z tabeli Produkty, a następnie wykonuje OUTER JOIN na kolumnach Product Key zarówno z kolumny Sales, jak i z kolumny Products.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Drugie zapytanie po prostu pobiera kolumnę Marka z tabeli Produkty.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jeśli przejdę do ekranu wyników, zobaczysz, że miara Total Quantity została podzielona na podstawie każdej marki.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Przejdźmy teraz do serwera SQL i napiszmy to samo zapytanie.

Przesuniemy tabelę DaxStudio Sales do następnego wiersza, odwołując się do tabeli Sales AS S. Następnie wykonamy również LEFT JOIN w tabeli DaxStudio Products oznaczonej AS P, z kluczem S.Product równym P.Klucz produktu. Zamierzamy również użyć P.Brand z SUM of the Quantity i Total Quantity w instrukcji SELECT . Na koniec użyjemy dla P.brand.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Po uruchomieniu tego kodu otrzymamy tabelę zawierającą łączną ilość segregowaną według każdej marki, czyli to samo, co poprzednio otrzymaliśmy w Vertipaq.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn

Jeśli chodzi o całkowity czas wykonania, pozostaje on znacznie wolniejszy i wynosi 2,5 sekundy.

Indeksowanie danych w Vertipaq: magazyn wierszy a magazyn kolumn


DAX dla usługi LuckyTemplates: Optymalizacja przy użyciu silników formuł w DAX Studio
Techniki i lekcje optymalizacji zapytań w języku DAX
Wydajność zapytań i konfiguracja w DAX Studio

Wniosek

Jest oczywiste, jak szybki jest magazyn kolumnowy za pośrednictwem Vertipaq w porównaniu z magazynem wierszy w bazie danych SQL. Pokazuje to, jak ważne jest poznanie sposobu, w jaki indeksowanie danych działa na różnych platformach.

Na początku może się to wydawać niewielkim poświęceniem, jeśli nadal zdecydujesz się na 2,5 sekundy, w której magazyn wierszy uruchamia twoje zapytanie w porównaniu do 7 milisekund. Ale wszyscy uruchamiamy kilka zapytań podczas tworzenia naszych raportów, a wszystkie te czasy wykonania sumują się, wpływając na produktywność i wrażenia użytkowników w dłuższej perspektywie.


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ć