使用 CONCATENATEX 书写度量值

本文翻译自Alberto Ferrari的文章——《Using CONCATENATEX in measures》本文展示了CONCATENATEX函数的使用,这是一个十分便捷的DAX函数,用于返回度量值中的值列表。

在示例中,使用CONCATENATEX有助于在公司开展业务的国家列表中找出表现最佳的国家及其相对销售额。最终的目标是获得如下图所示的报告:
file

在书写此度量值之前,要考虑到下述几个要点:

该度量值必须根据销售额返回表现最佳的国家
度量值的返回值类型必须为字符串,而不是合计数值
显示结果需要同时包含国家名称和对应的销售百分比。
如果几个国家位于同一水平,那么该度量值必须返回所有相关国家而不能仅返回按字母顺位排序的第一个国家。

这是完整的度量值代码:

file

计算步骤如下:

  1. TotalSales包含当前单元格的销售额。值得注意的是这个示例中使用四舍五入后的金额的唯一目的是强制进行关联,使用准确的销售额则不允许关联,演示效果也会被影响。

  2. CountrySales存储每个国家的国家名称以及销售量。

  3. CountryPerc将国家销售百分比与总销售额相加。

  4. 结果是最后一个表变量。它添加了一个新列,将国家名称和百分比组合为一个新字符串,格式为“United States(25.00%)”

此时,从包含要在报告中生成的字符串的结果中提取第一行就足够了。TOPN是提取该行的函数,但是这里有一个主要的缺点:如果出现并列,TOPN将返回所有涉及的值。

如果TOPN返回多行,则需要逐个显示这些行以明确结果不是唯一的。CONCATENATEX是一个迭代器,它连接字符串并从表中生成单个字符串。CONCATENATEX的第三个参数是连接元素之间的分隔符,在这个非常特殊的例子中,逗号后面跟着UNICHAR(10),这是用DAX编写“请添加新行”的一种较为复杂的方法。

CONCATENATEX在这种情况下非常有用,在这种情况下,不可能假定结果是一个单行的表,DAX将具有一行和一列的表视为标量值。实际上,VALUES经常用于从单例表中检索值。然而,CONCATENATEX提供了更强大的解决方案,因为它在表包含多行的情况下依然可以工作。

  • PowerPivot工坊原创文章,转载请注明出处!

    如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。


长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

Power Pivot工坊