DAX圣经学习笔记2 - 关于表的基础知识

目录

一、操作表的函数

1、使用CALCULATETABLE

2、表的基本操作

2.1 ADDCOLUMNS

2.2 SUMMARIZE

2.3 CROSSJOIN

2.4 UNION

2.5 INTERSECT

2.6 EXCEPT

二、表作筛选器

1、OR函数的使用

四、创建计算表

1、SELECTCOLUMNS

2、使用ROW创建静态表

3、使用DATATABLE创建静态表

4、使用GENERATESERIES


一、操作表的函数

1、使用CALCULATETABLE

CALCULATETABLE返回一张表

1.1、什么时候使用?

  • 当需要在模型的列上应用过滤器
  • 需要使用上下文转换和筛选上下文修饰的时候

1.2、和filter的对比?

CALCULATETABLEFILTER
列筛选,筛选上下文行上下文筛选,通过迭代逐一寻找满足条件的行
可以和筛选器搭配使用,如ALL,USERRELATIONSHIPS,CROSSFILTER等

不可以使用度量值作为条件使用可以使用度量值作为筛选条件

2、表的基本操作

2.1 ADDCOLUMNS

2.1.1 什么时候使用?

在原表基础上,想创造新的计算列。ADDCOLUMNS是一个迭代,行上下文。

通常和FILTER搭配使用。在进行复杂的计算时,搭配使用构建虚拟表。

2.2 SUMMARIZE

2.2.1 什么时候使用

主要用途是仅检索现有的值的组合,而不是完整的值列表,相当于GROUP BY的功能。

SUMMARIZE也可以像ADDCOLUMNS一样使用,但是用SUMMARIZE方法添加计算列不推荐使用,因为这样会导致行上下文和筛选上下文同时出现,不易于理解。如果需要使用SUMMARIZE添加列时,最好和ADDCOLUMNS搭配使用。

2.3 CROSSJOIN

2.3.1 什么时候使用?

返回卡迪尔集,排列出两个量之间所有的组合。更常用于查询而不是度量。

但是如果业务需求展示两张表中的组合数据,可以考虑使用CROSSJOIN,虽然也可以使用SUMMARIZE组合,但是SUMMARIZE扫描两张表的工作量可能会很大,性能较差,这时就考虑使用CROSSJOIN实现。

2.4 UNION

2.4.1 什么时候使用?

主要在创建计算表的时候使用,度量值中使用的情况会相对更少。注意使用的,UNION是不会去重,如果需要去重,之后使用DISTINCT达到效果,但是UNION可以保持原有的关系,使用DISTINCT只会原有的关系并不存在了,因为输入的表格是UNION之后的表,不是原有的表。这时候想要去计算总数SUM,需要相对更加复杂的代码实现(重新写SUM计算列,创建新的列)。

如果在使用DISTINCT之后想要保留原有的关系,可以使用TREATAS函数。

2.5 INTERSECT

2.5.1 什么时候使用?

返回交集。在TREATAS出现之前,INTERSECT的使用频率高很多。INTERSECT会保留原有关系,但是只保留第一个表的关系。

2.6 EXCEPT

2.6.1 什么时候使用?

取左集。针对两张表,在第一张表中去除第二张表中出现的值。to的值。同INTERSECT一样,只保留第一张表的关系。

二、表作筛选器

操作表的函数通常用于为CALCULATE参数构建复杂的筛选器。计算表最后当作一个已经筛选后的参数,传给CALCULATE使用,使用CALCULATE覆盖当前(外部筛选)类别和教育的当前筛选器。

书中例子在P384-P388

1、OR函数的使用

1.1 什么时候使用?

PBI报表上,切片器不能实现OR的功能,选择两个条件,就是两者必须成立。这时候需要借助OR函数在度量值中强制优先确定筛选。

四、创建计算表

1、SELECTCOLUMNS

1.1 什么时候使用?

和SQL中的SELECT类似。当你只想要原表中的几列当作新的表时,可以使用此函数。

SELECTCOLUMNS也可以用来新增列,必须提供每一列的名称和表达式,和sSUMMARIZE函数不同的是,SUMMARIZE函数有GROUP BY的共呢个,此函数仅仅是选中列。

2、使用ROW创建静态表

2.1 什么时候使用?

返回只有一行的表。ROW需要成对的名称和表达式,自从表构造函数表达的出现,ROW函数就较少的被使用了。

表函数构造表达: { (value1,value2) }

3、使用DATATABLE创建静态表

3.1 什么时候使用?

返回多行的表。DATATABLE创建一个表,不仅指定列名,还指定每列的数据类型及其内容。

4、使用GENERATESERIES

4.1 什么时候使用?

通常使用该函数船舰切片器的简单表,设置不同参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值