【发布时间】:2020-11-18 13:30:25
【问题描述】:
我尝试执行以下操作:
- 我有一列包含字符串,每列可以有几个子字符串,用分隔符“:”分隔
- 我需要连接列字符串(我在这里做了一个过滤器,只保留有趣的行)
- 然后根据分隔符“:”进行拆分
- 如果子字符串重复,只保留一次。
例子:
ColumnHeader
AA:BB:CC
BB:DD
DD:AA:EE
EE:AA:DD:BB
BB:EE
...
预期结果将是一个唯一的字符串:
"AA:BB:CC:DD:EE"
您将如何在 DAX 中执行此操作以填充新列?
我希望像在 Python 中一样在 DAX 中找到 for/while 循环...但失败了。
我试过这个:
List =
VAR SIn = ""
VAR SOut = ""
VAR Cursor = 0
VAR SList =
CONCATENATEX(
FILTER(ATable, ATable[Name] = CTable[Name]),
[ColumnHeader],
":")
VAR pos1 = FIND(":", SList, Cursor, len(SList))
VAR pos2 = FIND(":", SList, pos1, len(SList))
VAR elem = TRIM(MID(SList, pos1+1, pos2-pos1))
// following is not good but is what I would like to do:
VAR SOut = CONCATENATE(SOut, elem)
VAR SList = MID(SList, pos2, len(SList)-pos2)
VAR Cursor = pos2
// I need to loop ... but how ? ... as no for/while loops are possibles ?
感谢您的帮助。
======================================
感谢下面的答案,我设法解决了这个问题。
我仍然会提供更大的数据集,以便更好地了解全球问题:
我有 2 张桌子:
TABLE_BY_ELEMENT
KEY GROUP LIST KEY_DATA
1 G1 AA:BB:FF 11
2 G1 CC:AA 22
3 G1 FF:DD:AA 33
4 G1 CC:DD:AA 44
5 G2 CC:FF:GG 55
6 G2 BB:AA 66
TABLE_BY_GROUP
GROUP GROUP_DATA
G1 1111
G2 2222
我想这样查看数据:
RESULT_BY_GROUP
GROUP GROUP_DATA NewList
G1 111 AA:BB:FF:CC:DD
G2 222 CC:FF:GG:BB:AA
还有:
RESULT_ELEMENT
KEY LIST KEY_DATA
1 AA:BB:FF 11
2 CC:AA 22
3 FF:DD:AA 33
4 CC:DD:AA 44
5 CC:FF:GG 55
6 BB:AA 66
我希望这样更容易理解。
【问题讨论】:
-
最好在 Power Query/M 而不是 DAX 中执行此操作
-
例如你有 10 行,你想要 1 行/列的最终输出?如果没有,请准确显示您的输入和输出,以及您想要的最终输出。
-
我会尝试把它分成几行。使用查询编辑器每个值 1 行...最终结果是我想查看卡片(或表的 1 行)中的值,根据行 id 的切片器选择(数据示例中未显示)允许多选。
标签: string loops powerbi unique dax