azure - Azure 数据工厂:从 blob 读取文件一次并将其放入两个数据库
问题描述
我需要从blob中读取一次带有JSON的文件,然后进行一些转换,将一部分放入数据库A,另一部分放入数据库B。
假设我有一个包含以下内容的文件
{
"SerialNumber": "FAKE1",
"Connected": true,
"Timestamp":1616148596068,
"Sensors": [
{
"Number": "631",
"Value": 9
},
{
"Number": "600",
"Value": 44
}
]
}
作为数据库,我使用 Cosmos DB。
应插入数据库 A:
{
"SerialNumber": "FAKE1",
"Connected": true,
"Timestamp":1616148596068
}
应向数据库 B 插入 2 行:
{
"SerialNumber": "FAKE1",
"Timestamp":1616148596068,
"Number": "631",
"Value": 9
}
{
"SerialNumber": "FAKE1",
"Timestamp":1616148596068,
"Number": "600",
"Value": 44
}
如何在 Azure 数据工厂数据流中进行配置?我尝试使用复制数据活动。在这种情况下,我需要 2 个几乎相同的活动来读取同一个文件两次。
然后我尝试使用 * Data flow。但不知道如何 foreach 数组并将每一行作为单独的值插入 DB。我可以使用什么功能。有人可以帮忙吗?
如果我需要添加更多信息,请告诉我。先感谢您
解决方案
数据流是声明性的,这意味着您不会编写像管道这样的过程逻辑。通过行进行迭代是隐式发生的。我假设您正在读取一个 JSON 文件,并且您希望将标头写入一个数据库并将详细信息拆分到另一个数据库中。
Dataflow 将读取一次数据并并行写入两个数据库。
您将把标头信息提取到 DB1 中,并使用 flatten tx 提取详细信息以写入 DB2。
DSL 脚本片段看起来像
HeartBeats foldDown(unroll(Sensors),
mapColumn(
SerialNumber,
Timestamp,
Sensors.Number,
Sensors.Value)
) ~> HeartBeatsFlattened
推荐阅读
- java - 基于 findElements 循环遍历列表是如何工作的?
- kubernetes - 防止 Terraform 模块使用默认 kubeconfig
- c++ - ASIOSDK;从 hostsample.cpp 构建 mex 文件时出错
- sql - 查询具有未来 20 分钟内日期/时间的项目
- html - 在单独的路线上渲染卡片内容 [Angular]
- php - 显示总值时在 php 中遇到格式不正确的数值
- powershell - 在 Where-Object 条件之后获取第一个值
- python - ValueError:x和y在python的线性回归中必须具有相同的第一维
- swift - 使用 Siri 处理意图参数和动态选项的错误
- vim - vim 中的 ripgrep :term