You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query连接Azure存储表时出现间歇性OData格式不支持错误

解决Power Query连接Azure Storage Tables间歇性OData格式错误问题

问题场景

使用Azure AI知识库,数据存储于Azure Storage Tables中,在Power BI Desktop或Power Query Online查询数据时,间歇性触发以下错误:

DataFormat.Error: OData: The format 'application/json;odata=fullmetadata;streaming=true;charset=utf-8' is not supported.
Details:
application/json;odata=fullmetadata;streaming=true;charset=utf-8

用户使用的Power Query代码如下:

Source = AzureStorage.Tables(KnowledgeStoreStorageAccount),
    ThisTable = Table.Buffer(Source{[Name=GetTableName("Document")]}[Data]),
    RemovedColumns = Table.RemoveColumns(ThisTable,ColumnsToRemove),
    ExpandedContent = Table.ExpandRecordColumn(RemovedColumns, "Content", Record.FieldNames(RemovedColumns{0}[Content]))
in
    ExpandedContent

排查情况:硬编码表名仍会触发错误,尝试Table.Buffer无效,刷新后可临时恢复;数据量极小(最多几百行),Power Query Online也存在相同问题。

解决方案

1. 强制指定请求格式

绕过AzureStorage.Tables内置连接器,改用Web.Contents直接调用Azure Table Storage的OData API,显式设置支持的请求格式头,避免连接器自动生成不兼容的格式参数。示例代码:

StorageAccount = "your-storage-account-name",
    TableName = GetTableName("Document"),
    Url = "https://" & StorageAccount & ".table.core.windows.net/" & TableName,
    Headers = [
        #"Accept" = "application/json;odata=minimalmetadata",
        #"x-ms-version" = "2020-08-04"
    ],
    Source = Web.Contents(Url, [Headers=Headers]),
    JsonData = Json.Document(Source),
    Rows = JsonData[value],
    ToTable = Table.FromRecords(Rows),
    RemovedColumns = Table.RemoveColumns(ToTable, ColumnsToRemove),
    ExpandedContent = Table.ExpandRecordColumn(RemovedColumns, "Content", Record.FieldNames(RemovedColumns{0}[Content]))
in
    ExpandedContent

注:需确保Power BI已配置Azure Storage的合法访问权限(如OAuth认证或SAS令牌)。

2. 添加错误重试逻辑

针对间歇性错误,在Power Query中添加自定义重试函数,捕获指定错误时自动重试请求。示例:

RetryFunction = (retryCount as number) as table =>
        try 
            let
                Source = AzureStorage.Tables(KnowledgeStoreStorageAccount),
                ThisTable = Source{[Name=GetTableName("Document")]}[Data]
            in
                ThisTable
        otherwise
            if retryCount > 0 then RetryFunction(retryCount - 1) else error "重试次数耗尽",
    ThisTable = RetryFunction(3),
    RemovedColumns = Table.RemoveColumns(ThisTable, ColumnsToRemove),
    ExpandedContent = Table.ExpandRecordColumn(RemovedColumns, "Content", Record.FieldNames(RemovedColumns{0}[Content]))
in
    ExpandedContent

可根据实际情况调整重试次数(示例中为3次)。

3. 更新Power BI及连接器

确保Power BI Desktop为最新版本,同时检查Azure Storage Tables连接器是否已更新——旧版本连接器可能存在OData格式兼容性的间歇性Bug,更新后可解决部分问题。

内容的提问来源于stack exchange,提问作者MikeAinOz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:43:27