Virtuální tabulka
Představuje definici virtuální tabulky v DEFINE příkazu dotazu DAX.
Syntax
[DEFINE
(
TABLE <table name> = <table expression>
[WITH VISUAL SHAPE
(AXIS <axis name>
(GROUP <column>[, <column>] + TOTAL <column>) +
ORDER BY <column>[, <column>] +
) +
[DENSIFY <string literal>]
]
) +
]
(EVALUATE <table expression>) +
Parametry
Výraz tabulky definuje obsah virtuální tabulky. Virtuální tabulka je definována pouze v oboru aktuálního dotazu.
Volitelně lze ve virtuální tabulce definovat obrazec vizuálu. Obrazec vizuálu se používá pro výpočet vizuálu. Obrazec vizuálu se skládá z os s volitelně logickým sloupcem DENSIFY.
Osa je definována tak, aby byla seznamem souhrnných skupin následovaných seznamem pořadí podle sloupců, aby bylo možné určit, jak se má osa uspořádat. Souhrnná skupina se skládá z jedné nebo více skupin podle sloupců a potom jednoho logického sloupce TOTAL označujícího, jestli je každý řádek mezisoučtem aktuální souhrnné skupiny. FALSE hodnota označuje, že aktuální řádek je řádek podrobností (seskupení podle aktuální souhrnné skupiny). TRUE hodnota označuje, že se aktuální řádek zahrne (neskupuje se podle aktuální souhrnné skupiny).
Pokud je požadován sloupec DENSIFY, obrazec vizuálu provede densification. To znamená, že kromě řádků z původního výrazu tabulky přidáme také kombinaci hodnot os, které v původním výrazu tabulky neexistují. Jinými slovy, děláme levé vnější spojení z křížového spojení os s původním výrazem tabulky. Hodnota TRUE ve sloupci DENSIFY označuje, že aktuální řádek není v původním výrazu tabulky a přidává se procesem densifikace. Tento řádek by měl mít ve všech sloupcích měr prázdnou hodnotu (sloupce mimo definice os). Hodnota FALSE ve sloupci DENSIFY označuje, že aktuální řádek pochází z původního výrazu tabulky.
Návratová hodnota
Definuje se virtuální tabulka.
Poznámka
Na rozdíl od proměnných má virtuální tabulka vlastní rodokmen a nepřenáší rodokmen z výrazu tabulky, ze které je definovaný.
Příklad
Předpokládejme, že tabulka T má následující řádky:
Rok | Výrobek | SalesAmount |
---|---|---|
2000 | Jablko | $ 10,1 |
2000 | Banán | $ 10.2 |
2001 | Jablko | $ 20.3 |
DEFINE TABLE data = SUMMARIZECOLUMNS(ROLLUPADDISSUBTOTAL(T[Year], "IsYearTotal"), ROLLUPADDISSUBTOTAL(T[Product], "IsProductTotal"), "Meausre", SUM(T[SalesAmount]))
WITH VISUAL SHAPE
AXIS ROWS GROUP [Year] TOTAL [IsYearTotal] ORDER BY [Year]
AXIS COLUMNS GROUP [Product] TOTAL [IsProductTotal] ORDER BY [Product]
DENSIFY "IsDensified"
EVALUATE data
Vrácený výsledek je
data[Rok] | data[Produkt] | data[IsYearTotal] | data[IsProductTotal] | data[Míra] | data[IsDensified] |
---|---|---|---|---|---|
pravdivý | pravdivý | $ 40.6 | falešný | ||
2000 | falešný | pravdivý | $ 20.3 | falešný | |
2001 | falešný | pravdivý | $ 20.3 | falešný | |
Jablko | pravdivý | falešný | $ 30.4 | falešný | |
2000 | Jablko | falešný | falešný | $ 10,1 | falešný |
2001 | Jablko | falešný | falešný | $ 20.3 | falešný |
Banán | pravdivý | falešný | $ 10.2 | falešný | |
2000 | Banán | falešný | falešný | $ 10.2 | falešný |
2001 | Banán | falešný | falešný | pravdivý |