虛擬數據表
語法
[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>) +
參數
數據表表達式會定義虛擬數據表的內容。 虛擬數據表只會定義在目前查詢的範圍中。
您可以選擇性地在虛擬資料表上定義視覺圖形。 視覺圖形用於視覺計算。 視覺圖形是由具有布爾值 DENSIFY 數據行的座標軸所組成。
軸定義為匯總群組的清單,後面接著依數據行的順序,以指定座標軸的排序方式。 匯總群組由一或多個數據行組成,然後由一個布爾總計數據行組成,指出每個數據列是否為目前匯總群組的小計。 FALSE 值表示目前數據列是詳細數據列(依目前匯總群組分組)。 TRUE 值表示目前的數據列已匯總(未依目前匯總群組分組)。
如果要求 DENSIFY 數據行,則視覺圖形會執行 Densification。 這表示除了原始數據表運算式中的數據列之外,我們也新增原始數據表運算式中不存在的座標軸值組合。 換句話說,我們會使用原始數據表表達式,從座標軸的交叉聯結執行左外部聯接。 DENSIFY 數據行中的 TRUE 值表示目前的數據列不在原始數據表運算式中,而且由 densification 程式新增。 這類數據列在所有量值數據行中都應該有空值(軸定義以外的數據行)。 DENSIFY 資料行中的 FALSE 值表示目前數據列來自原始數據表運算式。
傳回值
已定義虛擬數據表
備註
不同於變數,虛擬數據表有自己的譜系,而且不會從其定義的數據表運算式中攜帶譜系。
例
假設資料表 T 具有下列資料列:
年 | 產品 | SalesAmount |
---|---|---|
2000 | 蘋果 | $ 10.1 |
2000 | 香蕉 | $ 10.2 |
2001 | 蘋果 | $ 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
傳回的結果為
data[Year] | data[Product] | data[IsYearTotal] | data[IsProductTotal] | data[Measure] | data[IsDensified] |
---|---|---|---|---|---|
真 | 真 | $ 40.6 | 假 | ||
2000 | 假 | 真 | $ 20.3 | 假 | |
2001 | 假 | 真 | $ 20.3 | 假 | |
蘋果 | 真 | 假 | $ 30.4 | 假 | |
2000 | 蘋果 | 假 | 假 | $ 10.1 | 假 |
2001 | 蘋果 | 假 | 假 | $ 20.3 | 假 |
香蕉 | 真 | 假 | $ 10.2 | 假 | |
2000 | 香蕉 | 假 | 假 | $ 10.2 | 假 |
2001 | 香蕉 | 假 | 假 | 真 |