从单个单元格中提取唯一值

时间:2019-03-12 10:38:26

标签: dax

想要从单元格中提取不同的值,数据如下所示。我需要输出,如Power BI的“不同值”列中所示。需要DAX

enter image description here

2 个答案:

答案 0 :(得分:1)

我是从Power BI社区网站上的a post那里得到这个想法的,并根据您的具体情况进行了调整。

一般的想法是...

  1. 找出字符串中有多少个字母。
  2. 使用GENERATESERIES创建一个列表,然后使用该系列的[Value]从原始字符串中提取字母。
  3. 删除重复的字母列表。
  4. 计算行数。

最终结果是一个看起来像这样的公式。

Letter Count = 
    VAR NameLength = LEN([Names])
    VAR TempList = ADDCOLUMNS(
            GENERATESERIES(1, NameLength, 1),
            "Letter", MID([Names], [Value], 1)
        )
    VAR DeDupeList = SUMMARIZE(TempList, [Letter])

RETURN
    COUNTROWS(DeDupeList)

这是结果。

enter image description here

答案 1 :(得分:0)

这太糟糕了,也许有人可以用更好的方式做到这一点,但是... DAX我不会这样做。

主要是因为我没有找到动态处理字符串大小的方法。因此,实际上这是硬编码的,最大字符串长度为5

Distinct Letters = 
    VAR v = SELECTEDVALUE('Table'[Names])
RETURN
IF( HASONEVALUE('Table'[Names]);
   COUNTROWS(
        SUMMARIZE(
            FILTER({(MID(v;1;1));(MID(v;2;1));(MID(v;3;1));(MID(v;4;1));(MID(v;5;1))};[Value] <> BLANK()
            );
            [Value]
        )
    )
;
BLANK()
)