从Azure数据工厂中的Azure存储资源管理器复制:预先查询表

问题描述 投票:0回答:1

我在 Azure 存储资源管理器上有一个来自 API 请求的每日更新的 csv 文件。通过使用 Azure 数据工厂,我想将此表复制到 PostgreSQL。这可以通过复制活动来完成。但是,我想事先做一些修改,因为否则 Postgres 中的表会变得太大。表格示例:

身份证 阅读日期 仪表名称 价值
AAA 2024-11-13 22:00:00-05:00 米1 20
AAA 2024-11-13 16:00:00-05:00 米1 10
BBB 2024-11-13 22:00:00-05:00 米1 40
BBB 2024-11-13 22:00:00-05:00 米2 60

我想要:

  • 仅获取具有 Meter1 读数的行。
  • 获取每个 ID 的最新值。

所以在上面的表格中我只需要第 1 行和第 3 行。

由于表格每天通过 API 更新,我想在 PostgreSQL 中覆盖最新值。但我们必须考虑到,在某些日子里,抄表可能会导致 ID 丢失。

在将其复制到 PostgreSQL 之前,这些修改是否可以在 Azure 数据工厂中进行?

postgresql azure-data-factory
1个回答
0
投票

您可以使用映射数据流来实现您的需求,如下所示:

创建 CSV 文件作为源数据集,添加源转换。将 filter 转换添加到源,以使用以下条件仅选择

MeterName
Meter1
的行:

equals(MeterName, "Meter1")

enter image description here

滤波器变换数据预览:

enter image description here

添加聚合转换以获取最新日期行,配置如下:

  • 分组依据:
    Id
    MeterName

enter image description here

  • 聚合:
    ReadDate - max(ReadDate)
    ,
    Value - first(Value)

enter image description here

您将得到如下所示所需的数据:

enter image description here

如果您想将其覆盖到 PostgreSQL 表中,请使用 Alter row 转换并选择 Upsert if ,写入您的条件。将 postgresql 数据集添加到接收器转换中,然后选择 Allow upsert ,选择 key column 如下所示:

enter image description here

使用创建的数据流调试数据流活动的管道,数据将成功复制到表中。

© www.soinside.com 2019 - 2024. All rights reserved.