use*_*430 2 azure azure-table-storage data-transform
我认为这是不可能的,但是无论我问这个问题,也许我错过了一些东西。
我们可以在 azure 表中添加/删除列吗?
例如,默认情况下我们会得到这些列:PartitionKey、RowKey、Timestamp、ETag。例如,我可以添加另外 3 个:名字、姓氏、电子邮件列吗?
之后我将插入一些值,我想删除列电子邮件并添加列地址。我们可以这样做吗?
正如 Igor 所说,Azure 表没有行和列的概念。一个表可以包含零个或多个实体,每个实体最多可以有 255 个属性(一个属性是名称/值/类型)。在这 255 个属性中,有 3 个是无法通过代码更新的系统属性(PartitionKey、RowKey 和 Timestamp)。创建实体时,您定义 PartitionKey 和 RowKey,之后它们将成为只读属性。因此,在更新实体时,您只能更新 252 个属性。
为了管理 Azure 表中的数据,有一个 REST API,您可以在请求正文中提供实体的属性。Azure 存储提供了两种更新实体的方式 -Update和Merge.
当您将 Azure 表服务告知Update实体时,它只会删除该实体的所有现有属性,并插入在请求负载中定义的属性。
当您将 Azure 表服务告知Merge实体时,它会查看现有实体属性并将它们与请求负载中定义的属性进行比较。如果找到匹配的属性,它只会更新这些属性。如果这些属性不存在于现有实体中,但在请求负载中定义,则这些属性将添加到实体中。如果该属性存在于现有实体中但未在请求负载中定义,则不会更改它们。
现在来解决你的问题。
因此,假设您已经有一个实体,您刚刚在其中定义了PartitionKey和RowKey。现在您要添加FirstName, LastName,Email属性。因为实体中没有这些属性,所以您可以使用Merge或Replace更新实体,这些属性将被添加到实体中。
现在您想Email从实体中删除属性,而是Address向该实体添加属性。您要做的是Update对该实体执行操作,其中您的请求正文将只有FirstName,LastName和Address属性(无Email属性)。当您使用此请求负载更新实体时,Email将从实体中删除属性。
Azure 表不像 SQL 表那样有“列”。Azure 表具有实体。每个实体最多有 255 个属性。大多数让您查看 Azure 表的工具都选择将其中的数据可视化为带有列的表格。但是,实际上,每个实体(行)都是属性的集合。
因此,您可以在每次保存时将对象/实体保存到具有不同属性的 Azure 表中。这让事情有些混乱,但你可以做到。
HTH
| 归档时间: |
|
| 查看次数: |
4485 次 |
| 最近记录: |