【问题标题】:How to extract a column based on it's content in PowerBI如何根据 Power BI 中的内容提取列
【发布时间】:2020-12-01 18:10:09
【问题描述】:

我的表格中有一个如下所示的列。

ResourceIdentifier
------------------
arn:aws:ec2:us-east-1:7XXXXXX1:instance/i-09TYTYTY79716
arn:aws:glue:us-east-1:5XXXXXX85:devEndpoint/etl-endpoint
i-075656565f7fea3
i-02c3434343f22
qa-271111145-us-east-1-raw
prod-95756565631-us-east-1-raw
prod-957454551631-us-east-1-isin-repository
i-02XXXXXXf0

我想要一个名为“Trimmed Resource Identifier”的新列,它查看 ResourceIdentifier,如果值以“arn”开头,则在最后一个“/”之后返回值,否则返回整个字符串。

例如。

arn:aws:ec2:us-east-1:7XXXXXX1:instance/i-09TYTYTY79716 ---> i-09TYTYTY797168

i-02XXXXXXf0 --> i-02XXXXXXf0

我该怎么做?我尝试通过提取 ResourceIdentifier 列的前 3 个字母来创建一个名为“前 3 个字母”的新列,但我在添加条件列的步骤中遇到了困难。请看下图。

有没有一种方法可以让我使用 DAX 一步完成所有这些操作,而不是创建一个新的中间列?

非常感谢

【问题讨论】:

    标签: powerbi dax powerquery m


    【解决方案1】:

    GUI 过于简单,无法完全满足您的需求,但请继续使用它来创建下一步,然后我们可以对其进行修改以使其正常工作。

    像这样填写 GUI

    将生成如下所示的一行代码(如果您没有看到此公式,请在查询编辑器的“视图”选项卡下打开“公式栏”)。

    = Table.AddColumn(#"Name of Previous Step Here", "Custom",
        each if Text.StartsWith([ResourceIdentifier], "arn") then "output" else [ResourceIdentifier])
    

    前三个字母位已经用我选择的运算符处理了,所以剩下的就是将"output" 占位符更改为我们真正想要的。我们可以使用方便的Text.AfterDelimiter function

    Text.AfterDelimiter([ResourceIdentifier], "/", {0, RelativePosition.FromEnd})
    

    这告诉它在第一个 / 之后获取文本(从末尾开始)。用这个表达式替换 "output" 就可以了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多