zl程序教程

您现在的位置是:首页 >  其他

当前栏目

如何实现 DAX 按指定顺序拼接字符串

2023-03-20 15:39:13 时间

小伙伴问,他拼接的字符串是随机顺序,如何实现特定顺序拼接,如:按销售额大小。本文来帮你解答。

先来看一个拼接字符串的效果,如下:

可以看出:

  • 第一个,只是简单的文本。
  • 第二个,带有销售额,但元素未按销售额排序。
  • 第三个,带有销售额,且元素按照销售额排序。

我们需要的正是第三种效果。

实现方法

实现方法如下:

Text.内容+销售额.按顺序 = 
VAR vList = ADDCOLUMNS( VALUES('Product'[Subcategory] ) , "@KPI" , INT( [Start:KPI] ) )
VAR vListRanded = ADDCOLUMNS( vList , "@Rank" , RANKX( vList , [@KPI] ) )

RETURN

CONCATENATEX( 
    GENERATESERIES( 1 , COUNTROWS( vList ) ) , 
    VAR vRow = FILTER( vListRanded , [@Rank] = [Value] )
    RETURN SELECTCOLUMNS( vRow , "Item" , [Subcategory] ) & " (" & SELECTCOLUMNS( vRow , "KPI" , [@KPI] ) & ") " , "," )

如果你正在学习 DAX,那么这又是一个非常好的案例可以帮助你理解 DAX 很多妙处。

这里的妙处在于:

CONCATENATEX 是无法合并多项内容的,而同时需要一个被排序的内容,这里使用迭代的思想(已经在 BI 真经中讲解过),构建一个用来迭代的顺序表即可,在迭代时带入需要的数据并进行显示即可。

总结

巧妙利用不同的 DAX 函数,不是仅仅需要技巧和记忆,有固定的思维模式和套路可以遵循。在《BI 真经》课程给出了这些套路的统一思想,希望你看懂一个案例,驾驭各种多变的需求。