Power BI - 将字符串输入拆分为表中的新行

问题描述 投票:0回答:2

我正在从事 Dynamics CRM 项目运营。我目前正在根据分配给资源的任务工作量整理一份报告。

正在提取的数据包含“计划工作”列。这些是负载中包含多个日期和时间的字符串。

单细胞示例是:

[{""End"":""\/Date(1660838400000)\/"",""Hours"":8,""Start"":""\/Date(1660809600000)\/""},{""End"":""\/Date(1660924800000)\/"",""Hours"":9,""Start"":""\/Date(1660892400000)\/""},{""End"":""\/Date(1661184000000)\/"",""Hours"":9,""Start"":""\/Date(1661151600000)\/""}]

我需要做的是,提取每个条目的日期和时间并将其添加到新表中,以便它们每个都有自己的行。此单元格所需的输出示例:

开始日期 结束日期 时间
1660809600000 1660838400000 8
1660892400000 1660924800000 9
1661151600000 1660924800000 9

单元格的长度可能因多个条目而异,因此需要考虑到这一点。

有谁可以为我指明如何在 Power BI 中完成此操作的正确方向吗?

powerbi dynamics-crm powerquery powerbi-desktop m
2个回答
4
投票

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wiq6OUYpRcs1LAVFWIELfJbEkVcPQzMzAwtjCxAAENPVBEjogwiO/tKgYrNYCzA8uSSwqwabXwNIMSW+tDh57LI1MLHDbY4nfHqBmIu0xNIR6hwx7DA1NDVH8E6sUGwsA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Replaced Value" = Table.ReplaceValue(Source,"""""","""",Replacer.ReplaceText,{"Column1"}),
    #"Parsed JSON" = Table.TransformColumns(#"Replaced Value",{},Json.Document),
    #"Expanded Column1" = Table.ExpandListColumn(#"Parsed JSON", "Column1"),
    #"Expanded Column2" = Table.ExpandRecordColumn(#"Expanded Column1", "Column1", {"End", "Hours", "Start"}, {"End", "Hours", "Start"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Expanded Column2","/Date(","",Replacer.ReplaceText,{"End", "Start"}),
    #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1",")/","",Replacer.ReplaceText,{"End", "Start"})
in
    #"Replaced Value2"

1
投票

除了上面@David的答案之外,您还可以在一个步骤中执行两个替换值转换:

#"Replaced Value1" = Table.ReplaceValue(
        #"Expanded Column2",
        "blah",
        "blah",
        (column_value, new, old) => Text.Select(column_value, {"0".."9"}),
        {"End", "Start"}
    )
© www.soinside.com 2019 - 2024. All rights reserved.