Techniki redukcji danych na potrzeby modelowania importuData reduction techniques for Import modeling

Ten artykuł jest przeznaczony dla osób modelujących dane w programie Power BI Desktop, których zadaniem jest opracowywanie modeli importu.This article targets Power BI Desktop data modelers developing Import models. Artykuł prezentuje różne techniki, które umożliwią redukcję danych załadowanych do modeli importu.It describes different techniques to help reduce the data loaded into Import models.

Modele importu są załadowane danymi, które są kompresowane i optymalizowane, a następnie przechowywane na dysku przez aparat magazynu VertiPaq.Import models are loaded with data that is compressed and optimized and then stored to disk by the VertiPaq storage engine. Po załadowaniu danych źródłowych do pamięci można zaobserwować 10-krotną kompresję, dlatego należy oczekiwać, że 10 GB danych źródłowych może zostać skompresowanych do około 1 GB.When source data is loaded into memory, it is possible to see 10x compression, and so it is reasonable to expect that 10 GB of source data can compress to about 1 GB in size. Ponadto po utrwaleniu na dysku można uzyskać dodatkową 20% redukcję.Further, when persisted to disk an additional 20% reduction can be achieved.

Pomimo wzrostu wydajności osiągniętej przez aparat magazynu VertiPaq należy dążyć do zminimalizowania danych, które mają zostać załadowane do modeli.Despite the efficiencies achieved by the VertiPaq storage engine, it is important that you strive to minimize the data that is to be loaded into your models. Dotyczy to przede wszystkim dużych modeli lub modeli, co do których przewiduje się, że w miarę upływu czasu będą coraz większe.It is especially true for large models, or models that you anticipate will grow to become large over time. Oto cztery ważne powody minimalizowania ilości danych:Four compelling reasons include:

  • Modele o większych rozmiarach mogą nie być obsługiwane przez daną pojemność.Larger model sizes may not be supported by your capacity. Udostępniona pojemność może pomieścić modele o wielkości do 1 GB, natomiast pojemności Premium mogą obsługiwać modele o wielkości do 13 GB.Shared capacity can host models up to 1 GB in size, while Premium capacities can host models up to 13 GB in size. Aby uzyskać więcej informacji, zapoznaj się z artykułem dotyczącym obsługi dużych zestawów danych w usłudze Power BI Premium.For further information, read the Power BI Premium support for large datasets article.
  • W przypadku modeli o mniejszych rozmiarach rywalizacja o zasoby pojemności, w szczególności pamięć, jest ograniczona.Smaller model sizes reduce contention for capacity resources, in particular memory. Pozwala to na równoczesne ładowanie większej liczby modeli przez dłuższy czas, co skutkuje niższymi wskaźnikami eksmisji.It allows more models to be concurrently loaded for longer periods of time, resulting in lower eviction rates. Aby uzyskać więcej informacji, zobacz Zarządzanie pojemnościami Premium.For more information, see Managing Premium capacities.
  • Mniejsze modele zapewniają szybsze odświeżanie danych, czego skutkiem są mniejsze opóźnienia w raportowaniu, wyższe przepływności odświeżania zestawu danych i mniejsze wykorzystanie zasobów systemowych i pojemności.Smaller models achieve faster data refresh, resulting in lower latency reporting, higher dataset refresh throughput, and less pressure on source system and capacity resources.
  • Mniejsza liczba wierszy w tabeli może skutkować szybszym dokonywaniem ocen obliczeń, co w ogólnym rozrachunku może zapewnić lepszą wydajność zapytań.Smaller table row counts can result in faster calculation evaluations, which can deliver better overall query performance.

W tym artykule omówiono osiem różnych technik redukcji danych.There are eight different data reduction techniques covered in this article. Te techniki obejmują:These techniques include:

Usuwanie niepotrzebnych kolumnRemove unnecessary columns

Kolumny tabeli modeli spełniają dwa główne cele:Model table columns serve two main purposes:

  • Raportowanie — w celu uzyskania projektów raportów, które odpowiednio filtrują, grupują i podsumowują dane modeluReporting, to achieve report designs that appropriate filter, group, and summarize model data
  • Modelowanie struktury — poprzez obsługę relacji między modelami, obliczeń w ramach modelu, ról zabezpieczeń, a nawet formatowania koloru danychModel structure, by supporting model relationships, model calculations, security roles, and even data color formatting

Kolumny, które nie służą tym celom, prawdopodobnie mogą zostać usunięte.Columns that don't serve these purposes can probably be removed. Usuwanie kolumn nazywa się filtrowaniem pionowym.Removing columns is referred to as vertical filtering.

Zalecamy projektowanie modeli zawierających dokładnie obliczoną liczbę kolumn w oparciu o znane wymagania dotyczące raportowania.We recommend that you design models with exactly the right number of columns based on the known reporting requirements. Twoje wymagania mogą z czasem ulec zmianie, ale należy pamiętać, że łatwiej jest dodać kolumny później niż je później usunąć.Your requirements may change over time, but bear in mind that it's easier to add columns later than it is to remove them later. Usunięcie kolumn może wywołać negatywne skutki dla raportów lub struktury modelu.Removing columns can break reports or the model structure.

Usuwanie niepotrzebnych wierszyRemove unnecessary rows

Tabele modelu powinny zawierać jak najmniejszą liczbę wierszy.Model tables should be loaded with as few rows as possible. Można to osiągnąć przez załadowanie przefiltrowanych zestawów wierszy do tabel modelu, korzystając z dwóch różnych sposobów: filtrowania według jednostek lub filtrowania według czasu.It can be achieved by loading filtered rowsets into model tables for two different reasons: to filter by entity or by time. Usuwanie wierszy nazywa się filtrowaniem poziomym.Removing rows is referred to as horizontal filtering.

Filtrowanie według jednostek polega na załadowaniu podzestawu danych źródłowych do modelu.Filtering by entity involves loading a subset of source data into the model. Na przykład zamiast ładować fakty dotyczące sprzedaży dla wszystkich regionów sprzedaży, należy załadować tylko fakty dla jednego regionu.For example, instead of loading sales facts for all sales regions, only load facts for a single region. Takie podejście projektowe zaowocuje wieloma mniejszymi modelami, a także może wyeliminować konieczność definiowania zabezpieczeń na poziomie wiersza (będzie to jednak wymagać przyznania określonych uprawnień zestawu danych w usłudze Power BI i utworzenia „duplikatów” raportów łączących się z każdym zestawem danych).This design approach will result in many smaller models, and it can also eliminate the need to define row-level security (but will require granting specific dataset permissions in the Power BI service, and creating "duplicate" reports that connect to each dataset). Aby uprościć zarządzanie i publikację, możesz użyć parametrów Power Query i plików szablonów Power BI.You can leverage the use of Power Query parameters and Power BI Template files to simplify management and publication. Aby uzyskać więcej informacji, przeczytaj wpis w blogu Deep Dive into Query Parameters and Power BI Templates (Szczegółowe omówienie parametrów zapytania i szablonów Power BI).For further information, read the Deep Dive into Query Parameters and Power BI Templates blog entry.

Filtrowanie według czasu polega na ograniczeniu ilości historii danych załadowanej do tabel faktów (i ograniczeniu wierszy dat załadowanych do tabel dat modelu).Filtering by time involves limiting the amount of data history loaded into fact-type tables (and limiting the date rows loaded into the model date tables). Zalecamy, aby nie ładować automatycznie całej dostępnej historii, chyba że jest to znany wymóg dotyczący raportowania.We suggest you don't automatically load all available history, unless it is a known reporting requirement. Warto zrozumieć, że filtry Power Query oparte na czasie mogą być sparametryzowane, a nawet ustawione na używanie względnych okresów czasu (na przykład w odniesieniu do daty odświeżania z ostatnich pięciu lat).It is helpful to understand that time-based Power Query filters can be parameterized, and even set to use relative time periods (relative to the refresh date, for example, the past five years). Należy również pamiętać, że retrospektywne zmiany w filtrach czasu nie spowodują uszkodzenia raportów, a jedynie zmniejszą (lub zwiększą) ilość historii danych dostępnej w raportach.Also, bear in mind that retrospective changes to time filters will not break reports; it will just result in less (or more) data history available in reports.

Grupowanie według i podsumowywanieGroup by and summarize

Prawdopodobnie najskuteczniejszą metodą redukowania rozmiaru modelu jest ładowanie wstępnie podsumowanych danych.Perhaps the most effective technique to reduce a model size is to load pre-summarized data. Tę technikę można wykorzystać do podniesienia ziarnistości tabel faktów.This technique can be used to raise the grain of fact-type tables. Istnieje jednak odrębne podejście, które powoduje utratę szczegółowych informacji.There is a distinct trade-off, however, resulting in loss of detail.

Na przykład źródłowa tabela faktów sprzedaży przechowuje jeden wiersz na wiersz zamówienia.For example, a source sales fact table stores one row per order line. Znaczącą redukcję danych można osiągnąć, podsumowując wszystkie metryki sprzedaży oraz grupując według daty, klienta i produktu.Significant data reduction could be achieved by summarizing all sales metrics, grouping by date, customer, and product. Jeszcze bardziej znaczącą redukcję danych można osiągnąć, grupując według daty na poziomie miesiąca.Consider, then, that an even more significant data reduction could be achieved by grouping by date at month level. Może to doprowadzić do 99% zmniejszenia wielkości modelu, ale raportowanie na poziomie dnia lub indywidualnego zamówienia nie będzie już możliwe.It could achieve a possible 99% reduction in model size, but reporting at day level—or individual order level—is no longer possible. Decyzja o sumowaniu danych faktycznych zawsze wiąże się z kompromisami.Deciding to summarize fact-type data always involves tradeoffs. Można je załagodzić dzięki projektowi modelu mieszanego. Opcja ta jest omówiona w temacie Przełączanie do trybu mieszanego.Tradeoff could be mitigated by a Mixed model design, and this option is described in the Switch to Mixed mode technique.

Optymalizowanie typów danych w kolumnachOptimize column data types

Aparat magazynu VertiPaq używa oddzielnych struktur danych dla każdej kolumny.The VertiPaq storage engine uses separate data structures for each column. Z założenia te struktury danych osiągają najwyższe optymalizacje dla danych w kolumnach liczbowych wykorzystujących kodowanie wartości.By design, these data structures achieve the highest optimizations for numeric column data, which use value encoding. Dane tekstowe i inne dane nieliczbowe wykorzystują jednak kodowanie wartości skrótu.Text and other non-numeric data, however, uses hash encoding. To z kolei wymaga, aby aparat magazynu przypisał identyfikator liczbowy do każdej unikatowej wartości tekstowej zawartej w kolumnie.It requires the storage engine to assign a numeric identifier to each unique text value contained in the column. Zatem to identyfikator liczbowy jest następnie przechowywany w strukturze danych, co z kolei wymaga wyszukiwania skrótu podczas przechowywania i wykonywania zapytań.It is the numeric identifier, then, that is then stored in the data structure, requiring a hash lookup during storage and querying.

W szczególnych przypadkach możesz przekonwertować źródłowe dane tekstowe na wartości liczbowe.In some specific instances, you can convert source text data into numeric values. Na przykład numer zamówienia sprzedaży może być stale poprzedzany wartością tekstową (np. „SO123456”).For example, a sales order number may be consistently prefixed by a text value (e.g. "SO123456"). Prefiks może zostać usunięty, a wartość zamówienia przekonwertowana na liczbę całkowitą.The prefix could be removed, and the order number value converted to whole number. W przypadku dużych tabel może to skutkować znaczną redukcją danych, zwłaszcza gdy kolumna zawiera unikatowe lub wysokie wartości kardynalne.For large tables, it can result in significant data reduction, especially when the column contains unique or high cardinality values.

W tym przykładzie zalecamy ustawienie właściwości kolumny Sumowanie domyślne na wartość „Nie sumuj”.In this example, we recommend that you set the column Default Summarization property to "Do Not Summarize". Pomoże to zminimalizować niewłaściwe sumowanie wartości numerów zamówień.It will help to minimize the inappropriate summarization of the order number values.

Preferencje dotyczące kolumn niestandardowychPreference for custom columns

Aparat magazynu VertiPaq przechowuje kolumny obliczeniowe modelu (zdefiniowane w języku DAX) podobnie jak zwykłe kolumny Power Query.The VertiPaq storage engine stores model calculated columns (defined in DAX) just like regular Power Query-sourced columns. Struktury danych są jednak przechowywane nieco inaczej i zwykle osiągają mniej wydajną kompresję.However, the data structures are stored slightly differently, and typically achieve less efficient compression. Ponadto są one tworzone po załadowaniu wszystkich tabel Power Query, co może wydłużyć czas odświeżania danych.Also, they are built once all Power Query tables are loaded, which can result in extended data refresh times. Dlatego mniej efektywne jest dodawanie kolumn tabeli jako kolumn obliczeniowych niż kolumn obliczanych programu Power Query (zdefiniowanych w zapytaniu M).It is therefore less efficient to add table columns as calculated columns than Power Query computed columns (defined in M).

Preferencje powinny tworzyć kolumny niestandardowe w programie Power Query.Preference should be creating custom columns in Power Query. Gdy źródłem jest baza danych, większą wydajność ładowania można osiągnąć na dwa sposoby.When the source is a database, you can achieve greater load efficiency in two ways. Obliczenia można zdefiniować w instrukcji języka SQL (za pomocą natywnego języka zapytań dostawcy) lub zmaterializować jako kolumnę w źródle danych.The calculation can be defined in the SQL statement (using the native query language of the provider), or it can be materialized as a column in the data source.

Jednak w niektórych przypadkach lepszym rozwiązaniem mogą być kolumny obliczeniowe modelu.However, in some instances, model calculated columns may be the better choice. Taka sytuacja może mieć miejsce, gdy formuła obejmuje ocenę miar lub wymaga zastosowania określonej funkcji modelowania obsługiwanej tylko przez funkcje języka DAX.It can be the case when the formula involves evaluating measures, or it requires specific modeling functionality only supported in DAX functions. Aby uzyskać informacje na temat jednego z takich przykładów, zapoznaj się z artykułem Omówienie funkcji dla hierarchii nadrzędny-podrzędny w języku DAX.For information on one such example, refer to the Understanding functions for parent-child hierarchies in DAX article.

Wyłączanie ładowania zapytań Power QueryDisable Power Query query load

Nie należy ładować do modelu zapytań Power Query, które mają wspierać integrację danych z innymi zapytaniami.Power Query queries that are intended support data integration with other queries should not be loaded to the model. Aby uniknąć ładowania zapytania do modelu, upewnij się, że w tych wystąpieniach obciążenie zapytaniami zostało wyłączone.To avoid loading the query to the model, take care to ensure that you disable query load in these instances.

Zrzut ekranu programu Power Query z wyświetloną opcją „Włącz ładowanie”.

Wyłączanie automatycznej daty/godzinyDisable auto date/time

Program Power BI Desktop oferuje opcję o nazwie Automatyczna data/godzina.Power BI Desktop includes an option called Auto date/time. Po włączeniu ta opcja tworzy ukrytą tabelę automatycznej daty/godziny dla kolumn dat. Umożliwia ona autorom raportów konfigurowanie filtrów, grupowanie i przechodzenie do szczegółów przy użyciu okresów czasowych kalendarza.When enabled, it creates a hidden auto date/time table for date columns to support report authors when configuring filters, grouping, and drill down for calendar time periods. Te ukryte tabele są w rzeczywistości tabelami obliczeniowymi, które spowodują zwiększenie rozmiaru modelu.The hidden tables are in fact calculated tables that will increase the size of the model. Aby uzyskać dodatkowe informacje dotyczące korzystania z tej opcji, zapoznaj się z artykułem Automatyczna data/godzina w programie Power BI Desktop — wskazówki.For guidance about using this option, refer to the Auto date/time guidance in Power BI Desktop article.

Przełączanie do trybu mieszanegoSwitch to Mixed mode

W programie Power BI Desktop projekt w trybie mieszanym tworzy model złożony.In Power BI Desktop, a Mixed mode design produces a Composite model. Zasadniczo pozwala on określić tryb przechowywania dla każdej tabeli.Essentially, it allows you to determine storage mode for each table. W związku z tym w każdej tabeli można ustawić właściwość Tryb przechowywania jako Import lub DirectQuery (albo Dual).Therefore, each table can have its Storage Mode property set as Import or DirectQuery (Dual is another option).

Skuteczną techniką zmniejszania rozmiaru modelu jest ustawienie właściwości Tryb przechowywania dla większych tabel faktów na DirectQuery.An effective technique to reduce the model size is to set the Storage Mode property for larger fact-type tables to DirectQuery. Należy wziąć pod uwagę, że takie podejście projektowe może sprawdzić się w połączeniu z techniką Grupowanie według i podsumowywanie wprowadzoną wcześniej.Consider that this design approach could work well in conjunction with the Group by and summarize technique introduced earlier. Na przykład podsumowane dane dotyczące sprzedaży można wykorzystać do uzyskania wysokiej wydajności raportowania „podsumowującego”.For example, summarized sales data could be used to achieve high performance "summary" reporting. Na stronie przeglądania szczegółowego można wyświetlić szczegółowe informacje o sprzedaży dla konkretnego (i wąskiego) kontekstu filtru, wyświetlając wszystkie kontekstowe zamówienia sprzedaży.A drill through page could display granular sales for specific (and narrow) filter context, displaying all in-context sales orders. W tym przykładzie strona przeglądania szczegółowego będzie zawierać wizualizacje oparte na tabeli DirectQuery w celu pobrania danych zamówienia sprzedaży.In this example, the drill through page would include visuals based on a DirectQuery table to retrieve the sales order data.

Z modelami złożonymi związane są jednak liczne implikacje dotyczące bezpieczeństwa i wydajności.There are, however, many security and performance implications related to Composite models. Aby uzyskać więcej informacji, zapoznaj się z artykułem Korzystanie z modeli złożonych w programie Power BI Desktop.For further information, read the Use composite models in Power BI Desktop article.

Następne krokiNext steps

Aby uzyskać więcej informacji na temat projektu modelu importu w usłudze Power BI, zapoznaj się z następującymi artykułami:For more information about Power BI Import model design, see the following articles: