樊江龙

2020-11-15   阅读量: 964

Power BI

如何选择power povit计算列和power query自定义列

扫码加入数据分析学习群

一、power povit计算列:

DAX计算列在将模型内容导入内存后计算DAX表达式的结果。DAX表达式对表的每一行执行,可以通过行上下文使用同一表的列,并且可以使用最初为空的筛选器上下文聚合数据。对每一行求值的DAX表达式的结果作为表的附加列存储在内存中;此结果可用于其他计算,以及筛选和分组数据。下面的屏幕截图显示了销售表中计算的价格范围列,它只取决于销售表[净价]列的值。

二、power query自定义列:

Power Query自定义列是一个M表达式,它定义了在将表导入数据模型之前应用于数据源的转换。根据表达式和数据源,Power Query自定义列的M表达式可以转换为对数据源的等效请求——就像SQL查询中的列表达式一样;Power Query引擎也可以计算它,修改来自数据源的行,这些行用于填充数据模型中的表。

三、power povit计算列和power query自定义列区别:

在模型中添加一列

  • 一个新的DAX计算列不需要完全刷新该表

  • 一个新的Power Query 自定义列需要完全刷新该表

完全刷新表格

  • 在所有分区的数据加载并在内存中压缩后,引擎开始处理DAX计算列。

  • 处理一个Power Query自定义列与处理来自数据源的任何其他列一样。

增量刷新和分区刷新

  • 即使表中仅添加或刷新了几行,引擎也会处理表中所有行的DAX计算列。

  • 引擎只计算在部分刷新中处理的行的PowerQuery自定义列的值。

压缩比较

  • DAX计算列不参与对最佳压缩排序顺序的评估。因此,对列的压缩可能非常不理想,特别是对于具有少量唯一值的列。

  • Power Query的自定义列与表中的任何其他列一样被压缩。

处理时间

  • 处理单个DAX计算列的成本相当于对刷新操作中包含的每一行的DAX表达式进行连续计算。同一张表中的多个DAX计算列以一个与计算依赖项兼容的顺序依次处理。

  • 当使用查询折叠优化表达式时,处理Power Query自定义列的成本主要取决于数据源。例如,如果将M表达式转换为等效的SQL表达式,那么性能和并行性完全依赖于SQL数据源。

  • 改善一列的压缩可能会对数据模型中其他列的压缩产生负面影响。

查询性能

  • 压缩效果更好的列的内存较小,通常可以提供更好的性能,这在涉及该列的筛选,分组和聚合操作中很重要。

  • DAX计算列的压缩率可能低于Power Query自定义列的压缩率。

  • 一列压缩的改进可能会对数据模型中其他列的压缩产生负面影响

四、1.何时使用power query自定义列

当表达式仅依赖于创建新列的表的同一行的其他列时,应该使用Power Query 自定义列。

如果数据源是关系数据库,并且您能够合并可以有效地连接到数据源中的表,那么最好使用PowerQuery函数对表进行非规范化-而不是将多个表导入数据模型然后创建DAX 计算列使用RELATED函数从其他表中检索相应数据。

如果需要聚合来自其他表的行,那么在决定是否使用Power Query自定义列时需要注意。PowerQuery自定义列在数据源上执行聚合,这可能需要很长的执行时间。如果发生这种情况,应该考虑使用DAX计算列,以避免长时间的处理。

2.何时使用DAX计算列

每当无法在Power Query自定义列中实现相同计算时,都应使用DAX计算列。典型的情况是从模型中的其他表聚合数据。另一种情况是来自不同数据源的表的非规范化,因为无法使用Power Query中的查询折叠技术对其进行优化。


添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
33.3121 6 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子