Sdílet prostřednictvím


Režim DirectQuery v tabulkových modelech

platí pro: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Tento článek popisuje režim DirectQuery pro tabulkové modely Analysis Services na úrovni kompatibility 1200 a vyšší. Režim DirectQuery můžete povolit pro modely, které navrhujete v sadě Visual Studio, nebo pro tabulkové modely, které už jsou nasazené, můžete přejít do režimu DirectQuery pomocí aplikace SQL Server Management Studio (SSMS). Než zvolíte režim DirectQuery, je důležité pochopit výhody i omezení.

Výhody

Ve výchozím nastavení tabulkové modely používají k ukládání a dotazování dat mezipaměť v paměti. Když tabulkové modely dotazují data umístěná v paměti, mohou být i složité dotazy velmi rychlé. Použití dat uložených v mezipaměti však má určitá omezení, například velmi velké datové sady můžou překročit dostupnou paměť a zpracování (aktualizace) dat modelu v paměti může v případě potřeby vyžadovat nadměrné množství dostupných prostředků.

DirectQuery tato omezení překoná a zároveň využívá funkce RDBMS, které zefektivní provádění dotazů. S DirectQuery:

  • Data jsou aktuální. Vzhledem k tomu, že se data vždy dotazují na zdroj dat, klientské reportovací aplikace vždy získávají nejnovější data.

  • Není třeba spravovat samostatnou kopii dat (v mezipaměti). Nevyžaduje se žádné zpracování (aktualizace) dat modelu. Změny podkladových zdrojových dat se dají okamžitě promítnout do dotazů na datový model.

  • Datové sady můžou být větší než kapacita paměti prostředku serveru Analysis Services.

  • DirectQuery může využít akceleraci dotazů na straně poskytovatele, jako je akcelerace pomocí indexů sloupců optimalizovaných pro paměť.

  • Zabezpečení může back-endová zdrojová databáze vynutit pomocí funkcí zabezpečení na úrovni řádků z databáze (případně můžete použít pravidla zabezpečení na úrovni řádků definovaná v modelu pomocí jazyka DAX).

  • Pokud model obsahuje složité vzorce, které můžou vyžadovat více dotazů, může služba Analysis Services provést optimalizaci, aby se zajistilo, že plán dotazu spuštěný v back-endové databázi bude co nejefektivnější.

Omezení

Tabulkové modely v režimu DirectQuery mají určitá omezení. Před přepnutím režimů je důležité určit, jestli výhody provádění dotazů na back-endovém serveru převáží nad jakýmkoli snížením funkčnosti. Pokud změníte režim existujícího modelu v sadě Visual Studio, návrhář tabulkového modelu vás upozorní na všechny funkce v modelu, které nejsou kompatibilní s režimem DirectQuery. Mějte na paměti následující omezení:

Vlastnost Omezení
Zdroje dat Modely DirectQuery můžou používat pouze data z jedné relační databáze následujících typů: Azure SQL Database, Azure Synapse Analytics, SQL Server, Oracle a Teradata.
Uložené procedury SQL U modelů DirectQuery nelze uložené procedury zadat v příkazu SQL pro definování tabulek.
Počítané tabulky Počítané tabulky nejsou podporovány v modelech DirectQuery, ale počítané sloupce jsou. Pokud se pokusíte převést tabulkový model, který obsahuje počítanou tabulku, dojde k chybě s oznámením, že model nemůže obsahovat vložená data.
Limity dotazů Výchozí limit řádků je jeden milion řádků. Tento limit lze zvýšit zadáním MaxIntermediateRowSize. Další informace najdete v tématu Vlastnosti jazyka DAX.
Vzorce DAX Při dotazování tabulkového modelu v režimu DirectQuery služba Analysis Services převede vzorce DAX a definice měr na příkazy SQL. Vzorce DAX obsahující prvky, které nelze převést na syntaxi SQL, vrátí chyby ověření v modelu.

Toto omezení je většinou omezené na určité funkce tabulek DAX. U měr se vzorce DAX převedou na operace založené na sadě s relačním úložištěm dat. To znamená, že všechny implicitně vytvořené ukazatele jsou podporovány.

Když dojde k chybě ověření, budete muset vzorec znovu napsat, nahradit jinou funkci nebo ji obejít použitím odvozených sloupců ve zdroji dat. Pokud tabulkový model obsahuje vzorce obsahující nekompatibilní funkce, zobrazí se při přepnutí do režimu DirectQuery v návrháři.

Poznámka: Některé vzorce v modelu se můžou ověřit, když model přepnete do režimu DirectQuery, ale při spuštění v mezipaměti v porovnání s relačním úložištěm dat vrátí jiné výsledky. Důvodem je to, že výpočty v mezipaměti používají sémantiku analytického modulu v paměti, který obsahuje funkce určené k emulaci chování Excelu, zatímco dotazy na data uložená v relačním zdroji dat používají sémantiku SQL.

Konzistence vzorců V některých případech může stejný vzorec vrátit různé výsledky v modelu uloženém v mezipaměti v porovnání s modelem DirectQuery, který používá pouze relační úložiště dat. Tyto rozdíly jsou důsledkem sémantických rozdílů mezi analytickým modulem v paměti a zdrojem dat.

Omezení MDX Žádné názvy relativních objektů. Všechny názvy objektů musí být plně kvalifikované.

Žádné příkazy MDX v rámci relace (pojmenované sady, vypočtené členy, vypočtené buňky, vizuální součty, výchozí členy atd.), ale můžete použít dotazové konstrukce, jako je klauzule WITH.

V klauzulích MDX subselect nejsou povoleny n-tice s členy z různých úrovní.

Žádné uživatelsky definované hierarchie.

Žádné nativní dotazy SQL (obvykle služba Analysis Services podporuje podmnožinu T-SQL, ale ne pro modely DirectQuery).

Připojení ke zdroji dat

Při navrhování modelu DirectQuery v prostředí Visual Studio se nejprve připojíte ke zdroji dat, a poté vyberete tabulky a pole, které chcete zahrnout do svého modelu, stejně jako u modelů uložených v paměti.

Pokud jste už zapnuli DirectQuery, ale ještě jste se nepřipojili ke zdroji dat, můžete použít Načíst data (nebo Průvodce importem dat pro starší poskytovatele zdrojů dat) ke připojení ke zdroji dat, výběru tabulek a polí atd. Rozdíl bude až po dokončení, do mezipaměti v paměti se ve skutečnosti neimportují žádná data.

Úspěch importu DirectQuery

Pokud jste už k importu dat použili funkci Získat data, ale zatím jste režim DirectQuery nezapínali, mezipaměť v paměti se vymaže.

Přidání ukázkových dat do projektu modelu DirectQuery

Při použití návrháře tabulkových modelů v sadě Visual Studio (SSDT) k návrhu projektu tabulkového modelu DirectQuery databáze pracovního prostoru modelu neobsahuje žádná data. Pro každou tabulku existuje jeden výchozí oddíl a tento oddíl směruje všechny dotazy na zdroj dat. Vzhledem k tomu, že byl DirectQuery poprvé zavedený, návrhář tabulkových modelů zahrnuje funkci Set as Sample ve Správci oddílů. Tato funkce umožňuje přidání oddílu kopírování do tabulek, které lze použít k importu malého množství ukázkových dat do databáze pracovního prostoru. Tato funkce slouží k ověření rozhodnutí o modelování bez dopadu na zdroj dat.

Důležité

Funkce Nastavit jako ukázkuv návrháři tabulkových modelů se v současné době nepodporuje. Neberte v úvahu varování, že Tabulka <TableName> neobsahuje ukázkový oddíl; pokud chcete použít data v SSDT, přidejte prosím ukázkový oddíl.

Nasazení modelů DirectQuery

Modely DirectQuery se nasazují stejně jako modely importu. Na rozdíl od modelů importu však pokud model DirectQuery obsahuje počítané položky, jako jsou počítané sloupce nebo skupiny výpočtů, musíte po nasazení provést přepočítání procesu u všech tabulek. Další informace najdete v tématu Zpracování databáze, tabulky nebo oddílu.

Viz také

Povolení režimu DirectQuery v sadě Visual Studio
Povolení režimu DirectQuery v SSMS
Definování oddílů v modelech DirectQuery– Testování modelu v režimu DirectQuery
Podporované zdroje dat ve službě Azure Analysis Services
Zdroje dat podporované v tabulkových modelech služby SQL Server Analysis Services 1400 a vyšších.