|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
DAX查询功能在现实工作中的应用主要涉及相关关系的多表格查询,本分享简单介绍DAX查询中度量值及多表格是如何工作的。
本分享使用AdventureWorks DW 2012数据模型,AdventureWorks DW 2012数据模型是许多相关PowerPivot网站共同使用的
模型示例,可用在我们PowerPivot的学习中。本示例文件可从百度网盘上下载,链接地址为:http://pan.baidu.com/s/1o6KacP0。
通过下载的相关access文件,在PowerPivot中建立数据模型,数据模型的关系见图所示。下述所有查询表达式均可直接粘贴到
“编辑DAX”对话框中执行相关查询。
1.使用DEFINE定义度量值:
EVALUATE(
SUMMARIZE(
'FactInternetSales',
'FactInternetSales'[ProductKey],
"Total Sales", SUM('FactInternetSales'[SalesAmount] )
)
)
ORDER BY [ProductKey]
上述表达式未使用DEFINE去定义度量值,下述表达式使用定义度量值,使得整个查询表达式更加清晰明了。这两个查询为单表格查询。
DEFINE
MEASURE 'FactInternetSales'[Total Sales] = SUM('FactInternetSales'[SalesAmount] )
EVALUATE(
SUMMARIZE(
'FactInternetSales',
'FactInternetSales'[ProductKey],
"Total Sales", [Total Sales]
)
)
ORDER BY [ProductKey]
2.使用多表格查询:
下例为FactInternetSales表格通过DimSalesTerrtory、DimProduct、DimDate表格相关列筛选,而得到的查询,它们涉及多表格查询。
FactInternetSales表格与DimSalesTerrtory、DimProduct、DimDate表格之间存在“多对一”关系,在DimSalesTerrtory、DimProduct、
DimDate表格指定的列筛选后得到的查询。
DEFINE
MEASURE 'FactInternetSales'[Sum of Sales] = SUM('FactInternetSales'[SalesAmount] )
EVALUATE(
SUMMARIZE(
'FactInternetSales',
'DimSalesTerritory'[SalesTerritoryRegion],
'DimProduct'[EnglishProductName],
'DimDate'[CalendarYear],
"Sum of Sales", [Sum of Sales]
)
)
3.使用CALCULATE函数和筛选函数,如ALL,FILTER:
通过在CALCULATE函数中对筛选参数的计算,得到指定的多表格查询(参看下述两个查询表达式)。
DEFINE
MEASURE 'FactInternetSales'[Sum of Sales] = SUM('FactInternetSales'[SalesAmount] )
MEASURE 'FactInternetSales'[Product Universe] = CALCULATE('FactInternetSales'[Sum of Sales], ALL('DimProduct'[EnglishProductName]))
EVALUATE(
SUMMARIZE(
'FactInternetSales',
'DimSalesTerritory'[SalesTerritoryRegion],
'DimProduct'[EnglishProductName],
'DimDate'[CalendarYear],
"Sum of Sales", [Sum of Sales],
"Product Universe", [Product Universe]
)
)
DEFINE
MEASURE 'FactInternetSales'[Sum of Sales] = SUM('FactInternetSales'[SalesAmount] )
MEASURE 'FactInternetSales'[Product of Australia] = CALCULATE('FactInternetSales'[Sum of Sales], FILTER('DimSalesTerritory','DimSalesTerritory'[SalesTerritoryRegion]="Australia"))
EVALUATE(
SUMMARIZE(
'FactInternetSales',
'DimSalesTerritory'[SalesTerritoryRegion],
'DimProduct'[EnglishProductName],
'DimDate'[CalendarYear],
"Sum of Sales", [Sum of Sales],
"Product of Australia", [Product of Australia]
)
)
|
评分
-
4
查看全部评分
-
|