我需要有关正则表达式的帮助,该表达式可以将一列的某些值拆分为多列数据。这个问题的背景是,这个数据集是从 MySQL 源中提取的,该源将该特定列存储为 json 列,但 json 列不会进入 Spotfire,因此我必须执行强制转换函数才能将其引入。
我们将此列称为[许多值]。列 [许多值] 为所有行存储相同的信息格式,但其中的数据值可能因行而异。例如,这就是 [Many Values] 的样子:
[许多值]
第 1 行:{"ValueA":100,"ValueB":50,"ValueC":20,"ValueD":0.09,"ValueE":108.5...}
第 2 行:{“ValueA”:45,“ValueB”:20,“ValueC”:76,“ValueD”:10.20,“ValueE”:null...}
第 3 行:{"ValueA":-10,"ValueB":200,"ValueC":40,"ValueD":27.1666,"ValueE":61.23...}
[许多值] 中存储了大量信息,但我希望有一个计算列(或多个计算列),第 1 行如下所示:
[提取的值A]:100
[提取的值B]:50
[提取的值C]:20
...
是否有一个好的正则表达式可以用来挑选我需要的值并将它们与所属的数字配对?或者我应该考虑采用不同的方法?感谢您的帮助!
这可能需要通过一些脚本实现自动化,具体取决于要提取的列数。
我已经取了你的 3 行并计算了以下列:
Json2: RXReplace([Json_string],"(\\{|\\})","","g")
其中 [Json_string] 是带有 JSON 的原始列。这会删除 {}。
然后对于字符串中的每一列(有 A B C D 和 E),我创建了一个计算列,例如:
Real(RXReplace(Split([Json2],",",1),'"ValueA":','','g'))
这适用于 A 列。对于 B 列,您使用 2 而不是 1,使用 ValueB 而不是 ValueA。对于 C,您使用 3 和 ValueC。等等
Real() 自动处理空值。