首页 文章

Azure数据工厂更改Azure表架构

提问于
浏览
1

我计划使用Azure数据工厂来创建Azure表存储的备份 . 我的Azure表中的实体可以更改其架构 . Azure Pipeline是否可以在没有每次架构更改的手动干预的情况下处理此问题?

例如:让我们先进入

<entry>
    <content type="application/xml">
      <m:properties>
        <d:PartitionKey>P1</d:PartitionKey>
        <d:RowKey>R1</d:RowKey>
        <d:Timestamp m:type="Edm.DateTime">2017-05-22T20:37:34.8743000Z</d:Timestamp>
        <d:IsDefault m:type="Edm.Boolean">False</d:IsDefault>
      </m:properties>
    </content>
  </entry>

而另一个条目可能是:

<entry>
    <content type="application/xml">
      <m:properties>
        <d:PartitionKey>P2</d:PartitionKey>
        <d:RowKey>R2</d:RowKey>
        <d:Timestamp m:type="Edm.DateTime">2017-05-22T20:37:34.8743000Z</d:Timestamp>
        <d:IsDefault m:type="Edm.Boolean">False</d:IsDefault>
        **<d:IsTest m:type="Edm.Boolean">False</d:IsTest>**
      </m:properties>
    </content>
  </entry>

每次实体更改时我都不想更改数据集 .

根据doc:https://docs.microsoft.com/en-us/azure/data-factory/data-factory-faq如果数据工厂数据集中未定义结构和jsonPathDefinition,则复制活动将检测模式从第一个对象并展平整个对象 .

他们是解决这个问题的方法吗?

1 回答

  • 0

    Azure表中的实体可以更改其架构 . Azure Pipeline是否可以在没有每次架构更改的手动干预的情况下处理此问题?

    this article中,我们可以发现,对于诸如Azure Table之类的无架构数据存储,数据工厂服务可以通过以下方式之一推断架构:

    1.如果通过使用数据集定义中的结构属性指定数据结构,则数据工厂服务将此结构视为模式 . 在这种情况下,如果行不包含列的值,则为其提供空值 .

    2.如果未使用数据集定义中的结构属性指定数据结构,则Data Factory将使用数据中的第一行来推断架构 . 在这种情况下,如果第一行不包含完整模式,则复制操作的结果中会遗漏一些列 .

    如果您不想在数据集定义中手动并显式指定结构属性,则可以在架构更改时将表架构存储/更新到另一个表或blob中,然后您可以create custom activity by using .NET SDK并根据存储的架构动态地和编程地定义结构属性在创建数据集时 .

相关问题