如何实现 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 真经》课程给出了这些套路的统一思想,希望你看懂一个案例,驾驭各种多变的需求。
相关文章
- 【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述
- C++初阶(stack+queue)
- 1、ArrayList源码解析
- 技术管理之如何协调加班问题
- 2流高手速成记(之八):基于Sentinel实现微服务体系下的限流与熔断
- 手把手教你学Dapr - 1. .Net开发者的大时代
- TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频
- 新零售SaaS架构:多租户系统架构设计
- Dubbo-聊聊Dubbo协议
- 深入理解KS
- 目标检测 — 评价指标
- 抓包整理————静态路由[十六]
- 汇编指令: LGDT、LIDT、LLDT、LMSW[]
- 小公司的应用服务部署历程
- 在 Spring 生态中玩转 RocketMQ
- 2021年了,`IEnumerator`、`IEnumerable`还傻傻分不清楚?
- 上周热点回顾(11.14-11.20)
- C++ using 编译指令与名称冲突
- 数据结构篇——哈希表
- 聊聊Go里面的闭包