幂查询表达式错误:&Quot;Record&Quot;类型的值无法转换为&Quot;Text&Quot;类型 [英] Power Query Expression error: A value of type "Record" cannot converted into type "Text"
本文介绍了幂查询表达式错误:&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屋!
查看全文