幂查询表达式错误:&Quot;Record&Quot;类型的值无法转换为&Quot;Text&Quot;类型 [英] Power Query Expression error: A value of type "Record" cannot converted into type "Text"

查看:13
本文介绍了幂查询表达式错误:&Quot;Record&Quot;类型的值无法转换为&Quot;Text&Quot;类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了无法执行以下代码的问题。语法似乎没问题,但当我尝试执行它时,我得到的响应是:

Expression.Error:无法将Record类型的值转换为&Quot;Text&Quot;类型。 详细信息: 值=[记录] Type=[类型]

let
body="{
""page"": ""1"",
""pageSize"": ""100"",
""requestParams"": {
    ""deviceUids"": [
        ""xxx-yyy-xxx-yyyy-xxxx"",
        ""yyy-xxx-yyy-xxxx-yyyy"",
        ""aaa-bbb-aaa-bbbb-aaaa"",
        ""ccc-ddd-ccc-dddd-cccc""
    ],
    ""entityColumns"": [
        {
            ""entityId"": ""144"",
            ""joinColumnName"": ""device_uid"",
            ""columnName"": ""device_random_date""
        }
    ],
    ""columnNames"": [
        ""ts"",
        ""device_uid"",
        ""1"",
        ""32"",
        ""55"",
        ""203"",
        ""204""
    ],
    ""startUnixTsMs"": ""1583413637000"",
    ""endUnixTsMs"": ""1583413640000"",
    ""columnFilters"": [
        {
            ""filterType"": ""eq"",
            ""columnName"": ""55"",
            ""value"": ""1234""
        }
    ],
    ""sortOrder"": [
        {
            ""column"": ""ts"",
            ""order"": ""DESC""
        },
        {
            ""column"": ""55"",
            ""order"": ""ASC""
        }
    ],
    ""entityFilters"": [
        {
            ""entityId"": ""144"",
            ""entityEntryIds"": [
                ""12345-221-232-1231-123456""
            ]
        }
    ]
}
}",
Parsed_JSON = Json.Document(body),
BuildQueryString = Uri.BuildQueryString(Parsed_JSON),
Quelle = Json.Document(Web.Contents("http://localhost:8101/device-data-reader-api/read-paginated/xxx-xxx-yyyy-yyyy", [Headers=[#"Content-Type"="application/json"], Content = Text.ToBinary(BuildQueryString)]))

in Quelle

我试图删除数字的引号,但这导致了相同的问题,因为系统报告它无法将数字转换为文本。 我需要的身体,需要移交的请求,以便做一个POST请求。我做错了什么?

推荐答案

由于您似乎希望将其作为application/json发送,我认为您应该在代码中更改这一位:

Content = Text.ToBinary(BuildQueryString)

收件人:

Content = Text.ToBinary(body)

然后您还可以去掉下面的行(因为您不需要它们):

Parsed_JSON = Json.Document(body),
BuildQueryString = Uri.BuildQueryString(Parsed_JSON),

我认为您不需要Uri.BuildQueryString,除非您希望作为application/x-www-form-urlencoded发送(即URL编码的键值对)。


无关:如果有帮助,您可以在M中构建结构,然后使用JSON.FromValue将结构转换为字节,这些字节可以直接放入POST正文中。下面是未经测试的示例。

let
    body = [
        page = "1",
        pageSize = "100",
        requestParams = [
            deviceUids = {
                "xxx-yyy-xxx-yyyy-xxxx",
                "yyy-xxx-yyy-xxxx-yyyy",
                "aaa-bbb-aaa-bbbb-aaaa",
                "ccc-ddd-ccc-dddd-cccc"
            },
            entityColumns = {
                [
                    entityId = "144",
                    joinColumnName = "device_uid",
                    columnName = "device_random_date"
                ]
            },
            columnNames = {
                "ts",
                "device_uid",
                "1",
                "32",
                "55",
                "203",
                "204"
            },
            startUnixTsMs = "1583413637000",
            endUnixTsMs = "1583413640000",
            columnFilters = {
                [
                    filterType = "eq",
                    columnName = "55",
                    value = "1234"
                ]
            },
            sortOrder = {
                [
                    column = "ts",
                    order = "DESC"
                ],
                [
                    column = "55",
                    order = "ASC"
                ]
            },
            entityFilters = {
                [
                    entityId = "144",
                    entityEntryIds = {
                        "12345-221-232-1231-123456"
                    }
                ]
            }
        ]
    ],
    Quelle = Json.Document(
        Web.Contents(
            "http://localhost:8101/device-data-reader-api/read-paginated/xxx-xxx-yyyy-yyyy",
            [
                Headers = [#"Content-Type" = "application/json"],
                Content = Json.FromValue(body)
            ]
        )
    )
in
    Quelle

这看起来可能有点奇怪(因为M使用[]而不是{}{}而不是[]=而不是:),但这只是为了以防万一。

这篇关于幂查询表达式错误:&Quot;Record&Quot;类型的值无法转换为&Quot;Text&Quot;类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆