Power BI DAX中通过While循环创建计算列的技术问询
问题描述
现有如下表格:
| Index | Group |
|---|---|
| 1 | Group1 |
| 2 | Group1 |
| 3 | Group2 |
| 4 | Group2 |
| 5 | Group3 |
| 6 | Group3 |
| 7 | Group4 |
| 8 | Group4 |
需要创建名为Group的计算列,要求遍历Index列,每2行切换一次GroupX值,且使用能适配表格动态维度的While循环实现,替换原有固定区间的Switch语句(原Switch语句如下):
- 先为表格添加名为
Index的索引列; - 添加名为
EXPORT_GROUP的计算列(需将TblName替换为实际表名):
EXPORT_GROUP = switch (true(), AND(TblName[Index]>=0, TblName[Index]<=20000), "Group1", AND(TblName[Index]>=20001, TblName[Index]<=40000), "Group2", "Group3")
解决方案
使用DAX的WHILE循环实现动态分组的计算列表达式如下(将TblName替换为你的实际表名):
Group = VAR CurrentIndex = TblName[Index] VAR RowsPerGroup = 2 // 可修改为动态值,比如CEILING(COUNTROWS(TblName)/期望分组数, 1)以适配动态维度 VAR CalculatedGroup = VAR Counter = 1 VAR RemainingIndex = CurrentIndex RETURN WHILE ( RemainingIndex > RowsPerGroup, Counter = Counter + 1, RemainingIndex = RemainingIndex - RowsPerGroup ) RETURN Counter RETURN "Group" & CalculatedGroup
说明:
RowsPerGroup定义每组包含的行数,这里设置为2,若要适配表格动态维度,可将其改为动态计算值,例如如果要将表格平均分成5组,可写成RowsPerGroup = CEILING(COUNTROWS(TblName)/5, 1)- 循环逻辑:通过不断减少剩余索引值,直到其小于等于每组行数,此时的计数器值即为当前行所属的分组编号,最后拼接成
GroupX格式的分组名称
内容的提问来源于stack exchange,提问作者Veronica
相关产品推荐
相关产品推荐

