如何解决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 举报,一经查实,本站将立刻删除。