CALCULATETABLE
语法结构:CALCULATETABLE(表,[筛选器1],……)
第一个参数为表,第二个参数为筛选器,筛选器可以有多个。
实操举例:数据集:商品销售明细表.xlsx
关注公众号获取数据:耶浓薄荷
1.筛选出江苏省的所有明细
=CALCULATETABLE('商品销售明细表','商品销售明细表'[省市.省份]="江苏省")
2.筛选出销售额大于1000的所有明细
=CALCULATETABLE('商品销售明细表','商品销售明细表'[销售额]>1000)
3.计算江苏省销售额大于1000的订单数
= COUNTROWS(
CALCULATETABLE('商品销售明细表','商品销售明细表'[省市.省份]="江苏省",'商品销售明细表'[销售额]>1000))
4.计算浙江省产生多少订单数(与FILTER一起用)
= COUNTROWS(
CALCULATETABLE('商品销售明细表',
FILTER('省市','省市'[省份]="浙江省")))
CALCULATETABLE函数返回的是表,因此需要结合其他函数创建度量值计算数值
CALENDAR
语法结构:CALENDAR(StartDate,EndDate)
1.创建2018年1月1日至2019年1月1日的日期表
CALENDAR(DATE(2018,1,1),DATE(2019,1,1))
2.返回日期表中所有日期
= CALENDAR(
MINX('日期表','日期表'[年度月份]),
MAXX('日期表','日期表'[年度月份])
)
CALENDAR同样返回的是表,无法单独使用。
实例展示:
销售门店表 =
GENERATE (
ADDCOLUMNS (
CALENDAR ( DATE ( 2019, 1, 1 ), TODAY () ),
"月", MONTH ( [Date] ),
"销量", RANDBETWEEN ( 0, 1000 )
),
DATATABLE ( "门店", STRING, { { "南京" }, { "苏州" }, { "无锡" }, { "常州" } } )
)
该表涉及到的函数有 GENERATE,ADDCOLUMNS,DATATABLE下面来分别介绍下这三个函数。
ADDCOLUMNS
语法结构:ADDCOLUMNS(表,名称1,表达式1,……)
返回具有DAX表达式指定的新列的表,ADDCOLUMNS顾名思义增加列,可以在表中增加许多列。DATATABLE
语法结构:DATATABLE(名称1,类型1,……,数据)
返回具有以内联方式定义的数据的表。GENERATE
语法结构:GENERATE(Table1,Table2)
为Table1中的每一行计算第二个表达式,返回第一个表与这些结果的笛卡尔积。
说到笛卡尔积,还有另一个表函数CROSSJOIN:CROSSJOIN
语法结构:CROSSJOIN(表1,……)
返回指定表的笛卡尔积后的表。
下一章讲一讲另一个表函数-SUMMARIZE