使用输出覆盖Azure功能表存储行

时间:2017-11-06 17:01:53

标签: powershell azure azure-functions

我有一个 Azure PowerShell功能,它会查询API管理分析以获取API列表,然后通过功能集成输出到Table Store表。

为每个API创建一行, PartitionKey 是API的名称, RowKey 是分析所来自的日期。

如果每天多次请求API的分析,则会导致错误。此时,功能 exectution失败,状态为 500内部服务器错误,我出现以下错误 -

  

返回函数后处理参数_binder时出错: - >指定的实体已存在。

虽然我计划按计划运行功能,因此在大多数情况下避免出现此问题,但最好是采用适当的解决方案,理想情况是覆盖现有条目。这可能吗?

$apiIds.GetEnumerator() | ForEach-Object {
    $analytic = $_.Value | Get-ApiManagementAnalytics -Context $context -StartDate $startDate -EndDate $endDate -AccessToken
    $tableRow = $analytic.value
    $tableRow | Add-Member -NotePropertyName PartitionKey -NotePropertyValue $tableRow.name
    $tableRow | Add-Member -NotePropertyName RowKey -NotePropertyValue ((Get-Date).ToString("yyyy-MM-dd"))
    $tableRows += $tableRow
}
$tableRows | ConvertTo-Json | Out-File -Encoding UTF8 $outputTable

2 个答案:

答案 0 :(得分:2)

我相信你要找的是TableOperation.InsertOrReplace

如果实体不存在,则将给定实体插入表中;如果实体存在,则其内容将替换为提供的实体。

答案 1 :(得分:0)

请参阅:https://stackoverflow.com/a/55527201

public string ETag { get; } = "*";