如何将表单识别器 JSON 结构转换为 SQL table

How to Transform Form recognizer JSON structure into SQL table

我有以下 JSON 结构,它由 Azure 表单识别器 return 编辑 API。

columnCount 键给出了实际的列数。

我想将 Kind = columnHeader 的单元格转换为 Azure 的 Column SQL table

Kind = null 的其余单元格应转换为 Rows

在 ADF 中实现此目的的最佳方法是什么?

  1. 在 ADF 中使用 Flatten Activity
  2. 使用 Azure 函数中的循环和 return CSV 字符串编写转换逻辑
  3. 在 Azure Functions
  4. 中使用像 JUST.NET 这样的库

注意:从表单识别器return编辑的行数和列数将是动态的

{ “行数”:9, “列数”:2, “细胞”: [{ “种类”:“列标题”, “行索引”:0, “列索引”:0, “行跨度”:1, “列跨度”:1, “内容”:“列A”, “边界区域”:[{ “页码”:5, “边界框”:[0.4461, 7.7151, 3.7924, 7.7151, 3.7924, 7.968, 0.4461, 7.968] }], “跨越”:[{ “偏移量”:6640, “长度”:9 }] }, { “种类”:“列标题”, “行索引”:0, “列索引”:1, “行跨度”:1, “列跨度”:1, “内容”:“B列”, “边界区域”:[{ “页码”:5, “边界框”:[3.7924, 7.7151, 7.1799, 7.7151, 7.1799, 7.968, 3.7924, 7.968] }], “跨越”:[{ “偏移量”:6650, “长度”:9 }] }, { “行索引”:1, “列索引”:0, “行跨度”:1, “列跨度”:1, "content": "Cell1Value", “边界区域”:[{ “页码”:5, “边界框”:[0.4461, 7.968, 3.7924, 7.968, 3.7924, 8.195, 0.4461, 8.195] }], “跨越”:[{ “偏移量”:6660, “长度”:18 }] }, { “行索引”:1, “列索引”:1, “行跨度”:1, “列跨度”:1, “内容”:“单元格2值”, “边界区域”:[{ “页码”:5, “边界框”:[3.7924, 7.968, 7.1799, 7.968, 7.1799, 8.195, 3.7924, 8.195] }], “跨越”:[{ “偏移量”:6679, “长度”:18 }] }, ] }

输出应该如下所示

列A,列B

单元格 1 值、单元格 2 值

这是一个对我有用的例子,是通过使用展平和聚合转换实现的。

展平时,按'cells'展开。

Flatten

FlattenDataPreview

然后,在聚合转换中,使用以下表达式按行索引分组并按文本聚合:

replace(trim(trim(toString(collect(text)),'['),']'),'"','')

AggregateDataPreview

如果您想继续使用数据流来设置您的 table,您可以创建派生列并将 SQL 设置为您的接收器。

TableDataPreview

或者,您可以保存到存储,然后在您的管道中使用副本 activity。