Azure数据工厂更改Azure表架构

时间:2017-05-22 23:25:16

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

我计划使用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>

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

  

根据文件:   https://docs.microsoft.com/en-us/azure/data-factory/data-factory-faq

     

如果未在Data中定义结构和jsonPathDefinition   工厂数据集,复制活动从第一个检测模式   对象并压平整个对象。

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

1 个答案:

答案 0 :(得分:0)

  

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

this article中,我们可以发现,对于Azure Table等无架构数据存储,Data Factory服务可以通过以下方式之一推断架构:

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

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

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