我计划使用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 工厂数据集,复制活动从第一个检测模式 对象并压平整个对象。
他们是解决这个问题的方法。
答案 0 :(得分:0)
Azure表中的实体可以更改其架构。 Azure Pipeline是否可以在没有每次架构更改的手动干预的情况下处理此问题?
在this article中,我们可以发现,对于Azure Table等无架构数据存储,Data Factory服务可以通过以下方式之一推断架构:
1。如果通过使用数据集定义中的结构属性指定数据结构,则数据工厂服务将此结构视为模式。在这种情况下,如果某行不包含列的值,则为其提供空值。
2。如果您未通过使用数据集定义中的结构属性来指定数据结构,则Data Factory将使用数据中的第一行来推断架构。在这种情况下,如果第一行不包含完整模式,则复制操作的结果中会遗漏一些列。
如果您不想在数据集定义中手动和显式指定结构属性,则可以在架构更改时将表架构存储/更新到另一个表或blob中,然后您可以create custom activity by using .NET SDK并动态地&amp;在创建数据集时,以编程方式定义基于存储模式的结构属性。