2.6 PowerBI数据建模-新建列的4种方法及其优先级

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。

当一个表的列不能满足分析使用,需要新的列用于报告的切片器、行或列、坐标轴、度量值的FILTER等,就要考虑新建列。

新建列方法

新建列的可以在4个环节内完成:数据源、PowerQuery、VAR过程列、DAX计算列。

数据源:在上游数据源(数据库或文件)中新建列,然后直接导入PowerBI使用。

PowerQuery:在数据清洗的过程中添加列,处理后加载到模型。

VAR过程列:不生成物理列,在计算列的计算过程中,使用VAR现调取现使用,用后抛弃。

在金额计算列中使用了VAR价格列:

金额 =

VAR _vm_Price = RELATED(Dim_Product[Price])

RETURN [数量]*_vm_Price

DAX计算列:在现有的表中使用DAX新建列。

特别说明一下,DAX计算列,这种方法使用DAX语言、基于模型关系,相对简单快捷,使用频率很高,但也有一定的劣势,尤其是一个表有上百万行的情况,在PowerBI服务器上会占用计算内存影响报告性能,而且压缩率不佳影响模型的大小。一个几百M的模型,已经很大了,在模型中一个1000万行的表中使用RELATED新建一列生成的文件,比在PowerQuery中合并查询生成的文件大30M左右。

优先级建议

那优先使用哪种方法新建列呢?

1 充分利用模型,因为有关系的存在,能不新建列就不要新建列。维度表中的列可以直接用于报告,没必要使用RELATED新建计算列。

2 在计算列或度量值中使用过程列。比如订单表中的金额列=单价*数量,单价来自于另外的价格表(有无关系不重要),没有必要为了计算金额列在订单表中新建一个单价列,VAR获取到当前行对应的另外一个表的价格就可以了。甚至可以在书写度量值的过程中,在VAR表中使用ADDCOLUMNS新建列,然后基于这个VAR表计算度量值。

3 如果必须新建物理列(数据表中存在的列),能在数据源中新建列,就优先在数据源中新建列。

4 数据源不方便调整的话,能在PowerQuery中添加列,就在PowerQuery中添加列。注意,在使用增量刷新的表中,该方法不适用,因为它仅更新增量刷新的行,反而是DAX计算列会在增量刷新后更新所有的行。

5 以上皆不可,使用DAX新建列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值