微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Power BI 倍数如果包含从 Tableau 计算的度量转换的拆分

如何解决Power BI 倍数如果包含从 Tableau 计算的度量转换的拆分

我是一名 Power BI 新用户,突然从 Tableau 切换过来,但我在使用 DAX 表达式时遇到了一些问题。

我有一列 (Detail1) 的 URL,其中一些(以 .aspx、.ppt、.pdf、.doc 结尾)附加了一些垃圾字符串。在 tableau 中,我从以下计算中创建了一个计算列来清理它们:

    IF CONTAINS([Detail1],".aspx") THEN
        SPLIT([Detail1],".aspx",1) + ".aspx"
    ELSEIF CONTAINS([Detail1],".ppt") THEN
        SPLIT([Detail1],".ppt",1) + ".ppt"
    ELSEIF CONTAINS([Detail1],".pdf") THEN
        SPLIT([Detail1],".pdf",1) + ".pdf"
    ELSEIF CONTAINS([Detail1],".doc") THEN
        SPLIT([Detail1],".doc",1) + ".doc"
    ELSE
        [Detail1]
    END

但是我在 DAX 表达式中很难做到这一点。有人能指出我正确的方向吗?

非常感谢您的帮助!

解决方法

我创建了一个虚拟表,其中包含带有不需要的额外信息的 URL。 我有两个 DAX 解决方案可以解决您的问题。

解决方案 1:DAX

表格

+--------------------------------------+
|                Detail1               |
+--------------------------------------+
| https://url.com/page1.aspx?extrainfo |
+--------------------------------------+
| https://url.com/page1.doc?extrainfo  |
+--------------------------------------+
| https://url.com/page1.ppt?extrainfo  |
+--------------------------------------+
| https://url.com/page1.pdf?extrainfo  |
+--------------------------------------+
| https://url.com/page1.doc?extrainfo  |
+--------------------------------------+

在不知道您的数据的情况下,最简单的解决方案是提取 ? 符号之前的所有内容,我可以想象您的数据集中可能有类似的结构。

如果是这种情况,您可以创建以下计算列

CleanUrl = 
PATHITEMREVERSE(SUBSTITUTE([Detail1],"?","|"),2,TEXT)

创建此表

+--------------------------------------+----------------------------+
|                Detail1               |          CleanUrl          |
+--------------------------------------+----------------------------+
| https://url.com/page1.aspx?extrainfo | https://url.com/page1.aspx |
+--------------------------------------+----------------------------+
| https://url.com/page1.doc?extrainfo  | https://url.com/page1.doc  |
+--------------------------------------+----------------------------+
| https://url.com/page1.ppt?extrainfo  | https://url.com/page1.ppt  |
+--------------------------------------+----------------------------+
| https://url.com/page1.pdf?extrainfo  | https://url.com/page1.pdf  |
+--------------------------------------+----------------------------+
| https://url.com/page1.doc?extrainfo  | https://url.com/page1.doc  |
+--------------------------------------+----------------------------+

解决方案 2:DAX

如果您的列 Detail1 中没有明确的模式,则以下计算列采用相同的逻辑并将其调整为 DAX

CleanUrlV2 =
    SWITCH (
    TRUE (),CONTAINSSTRING ( [Detail1],".aspx" ),PATHITEMREVERSE ( SUBSTITUTE ( [Detail1],".aspx","|" ),TEXT ) & ".aspx",".ppt" ),".ppt",TEXT ) & ".ppt",".pdf" ),".pdf",TEXT ) & ".pdf",".doc" ),".doc",TEXT ) & ".doc",[Detail1]
)

输出表

+--------------------------------------+----------------------------+
|                Detail1               |         CleanUrlV2         |
+--------------------------------------+----------------------------+
| https://url.com/page1.aspx?extrainfo | https://url.com/page1.aspx |
+--------------------------------------+----------------------------+
| https://url.com/page1.doc?extrainfo  | https://url.com/page1.doc  |
+--------------------------------------+----------------------------+
| https://url.com/page1.ppt?extrainfo  | https://url.com/page1.ppt  |
+--------------------------------------+----------------------------+
| https://url.com/page1.pdf?extrainfo  | https://url.com/page1.pdf  |
+--------------------------------------+----------------------------+
| https://url.com/page1.doc?extrainfo  | https://url.com/page1.doc  |
+--------------------------------------+----------------------------+

出于某种原因,Stackoverflow 不支持带有 // 的 Markdown 表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。