【问题标题】:Table storage showing data in only string format表存储仅以字符串格式显示数据
【发布时间】:2020-06-02 22:13:42
【问题描述】:

我正在使用 ADF 管道将数据从数据湖复制到 Blob 存储,然后从 Blob 存储复制到表存储。

如下所示,以下是 ADF 数据流接收器 - Blob 存储中的列类型(整数、字符串、时间戳):

这里是复制数据活动中的映射设置:

在检查表存储中的输出时,我看到所有列都是字符串类型:

为什么表存储以字符串值保存数据?如何在表存储中解决此问题,以便它接受正确类型(整数、字符串、时间戳)的列?请告诉我。谢谢!

【问题讨论】:

    标签: azure-data-factory azure-table-storage azure-data-factory-2


    【解决方案1】:

    通常情况下,当从数据工厂中的blob存储中加载数据时,blob文件中的所有默认数据类型都是String,数据工厂会帮助您自动将数据类型转换为Sink。

    但它也不能满足我们所有的要求。

    我测试了从Blob复制数据到表存储,发现:如果我们在Source中不手动指定数据类型,管道执行后,所有数据类型在Sink(Table Storage)中都是String。

    例如,这是我的源 blob 文件:

    如果我不更改源数据类型,Sink 表中似乎一切正常:

    但是流水线执行后,表存储中的数据类型都是String:

    如果我们手动更改 Source blob 中的数据类型,它可以正常工作!

    另外一个问题,只是从你的截图有点混淆,这似乎是 Mapping Data Flow Sink 的 UI,但是 Mapping Data Flow 不支持作为 Sink 的表存储。

    希望这会有所帮助。

    【讨论】:

    • 谢谢!更新了我的问题以显示我的管道的外观 - 我有一个映射数据流,它首先将数据存储到 Blob(问题显示了数据流接收器的架构 - Blob 存储)。我是否应该对表存储复制数据活动中的映射设置进行任何更新以接受字符串以外的类型?
    • @user3693060 我们无法做到这一点。一旦在 Mapping Flow 中创建了 blob,数据类型将变为字符串。源是数据流的输出,我们不能改变它,在 CopyDataFromBlobToTable active 中手动做映射。
    • 嗨@user3693060,希望你做得很好。如果我的回答对你有帮助,可以标记为答案吗?这对其他社区成员可能是有益的。谢谢。
    • 谢谢!我需要使用以下查询来过滤表中的数据: ?$filter=Age%20gt%2030" 目前这不起作用,因为 Age 列中的数据是字符串格式。是否可以先转换 ' 中的数据Age' 列转换为整数格式并使用上述查询?
    • @user3693060 不客气。很抱歉我之前没有尝试过该操作,可能无法回答您。
    【解决方案2】:

    终于解决了这个问题——我在 Blob 存储中使用了 DelimitedText 格式。转换为 Parquet 格式后,我可以看到数据以正确的类型写入表存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      相关资源
      最近更新 更多