Power Query:从内部有许多引号的长字符串中提取包含引号的子字符串

Power Query: Extract substring containing quotation marks from a long string with many quotation marks inside

{"c": "4343434", "d": "m", "k": "+la+la", "l": "40990", "m": "b", "n": "o",
"p": "{adposition}", "s": "b", "dm": "{devicemodel}", "adc": "{creative}", 
"adg": "454554545454", "src": "hahahah45", "tid": "kwd-utututututu", 
"utm_term": "+ka +ka", "utm_medium": "cpc"}

我正在尝试将 "s":"b" 部分提取到 Power Query 查询的新列中。我知道这归结为转义,我已经阅读了 M 公式语言的官方文档,但我只是不知道如何仅使用文本公式来提取它。我该怎么做?

可以用Json.Document解析Json。

let
    Source = "{""c"": ""4343434"", ""d"": ""m"", ""k"": ""+la+la"", ""l"": ""40990"", ""m"": ""b"", ""n"": ""o"", ""p"": ""{adposition}"", ""s"": ""b"", ""dm"": ""{devicemodel}"", ""adc"": ""{creative}"", ""adg"": ""454554545454"", ""src"": ""hahahah45"", ""tid"": ""kwd-utututututu"", ""utm_term"": ""+ka +ka"", ""utm_medium"": ""cpc""}",
    Result = Json.Document(Source)[s]
in
    Result

@石洋有需要的关键功能

如果您有一个 table,其中有一个名为 Text 的列,其中每一行都有类似于 post 中的文本,那么您可以编写一个自定义列来提取属于s 使用以下公式:

= Json.Document([Text])[s]

这会获取 [Text] 列中的文本并将其读取为 JSON 并提取 s 组件。


完整的步骤代码如下所示:

= Table.AddColumn(#"Preveious Step", "Custom", each Json.Document([Text])[s])