【问题标题】:Split a json string column or flatten transformation in data flow (ADF)在数据流 (ADF) 中拆分 json 字符串列或展平转换
【发布时间】:2021-01-18 14:58:42
【问题描述】:

我将以下 csv 文件复制到 ADF 中的数据流中。

Data 列是 json 格式,但它被认为是字符串。我想将数据列展平为单独的行。我尝试了扁平化转换,因为数据列不是 json,所以它不起作用。我该如何处理?我也尝试了拆分表达式,它也不起作用。谢谢

【问题讨论】:

  • 名为“数据”的列看起来不是 JSON 格式,对吧?
  • 它看起来像 json 格式,但是当我从 csv 数据集复制它时,它变成了字符串格式。在 excel csv 中,它具有 json 格式。如果它在数据流中是 json 格式,我可以展平列。在源投影中,没有选项可以更改 json 的字符串。我该如何处理?谢谢
  • @QianruSong 从你的截图来看,数据不是 JSON 格式的。您的来源是一个excel文件。你能给我们展示一下excel文件中的数据吗? Source 无法将列数据类型转换为 josn。但是在数据流中,我们可以使用派生列表达式来展平它。

标签: azure-data-factory-2 azure-data-flow


【解决方案1】:

仅从您的屏幕截图中,我们可以发现:

  1. Data 中的数据不是 JSON 格式。
  2. 数据看起来最像一个数组。
  3. “数组”有 9 个元素。

我必须将其视为“数组”,然后我们可以使用数据流Derived Column 来展平数据。请在下面参考我的步骤:

来源数据:

派生列表达式和设置:

将数据变为字符串并使用索引获取值的表达式:

Data 1: split(substring(Data, 2, length(Data)-2), ",")[1]
Data 2: split(substring(Data, 2, length(Data)-2), ",")[2]
Data 3: split(substring(Data, 2, length(Data)-2), ",")[3]
Data 4: split(substring(Data, 2, length(Data)-2), ",")[4]
Data 5: split(substring(Data, 2, length(Data)-2), ",")[5]
Data 6: split(substring(Data, 2, length(Data)-2), ",")[6]
Data 7: split(substring(Data, 2, length(Data)-2), ",")[7]
Data 8: split(substring(Data, 2, length(Data)-2), ",")[8]
Data 9: split(substring(Data, 2, length(Data)-2), ",")[9]

派生列输出:

如果Data是标准的JSON格式,我们需要先把字符串转成JSON,然后用key取值。

HTH。

【讨论】:

  • 嗨 Leon,我以为是 json,因为我使用了函数 - 解析 json 来提取 powerBI 数据流中的数字。你的回答很有帮助。谢谢
  • 嗨 Leon,我遇到了你描述的情况,一个包含整个 JSON 字符串的列,我需要解析它并将数据加载到 SQL 数据库中。我认为在派生列中没有表达式可以做到这一点(至少我找不到),您之前是否遇到过这种情况,您是如何将字符串转换为 JSON 的?
  • @quickshare 你能发布一个新的问题吗?
  • 好的,我已经添加了更多详细信息并在此处发布了一个新问题:stackoverflow.com/questions/66437383/… 感谢您查看它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多