我计划使用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 回答
在this article中,我们可以发现,对于诸如Azure Table之类的无架构数据存储,数据工厂服务可以通过以下方式之一推断架构:
1.如果通过使用数据集定义中的结构属性指定数据结构,则数据工厂服务将此结构视为模式 . 在这种情况下,如果行不包含列的值,则为其提供空值 .
2.如果未使用数据集定义中的结构属性指定数据结构,则Data Factory将使用数据中的第一行来推断架构 . 在这种情况下,如果第一行不包含完整模式,则复制操作的结果中会遗漏一些列 .
如果您不想在数据集定义中手动并显式指定结构属性,则可以在架构更改时将表架构存储/更新到另一个表或blob中,然后您可以create custom activity by using .NET SDK并根据存储的架构动态地和编程地定义结构属性在创建数据集时 .