sql - 使用 REST 或 JSON 查询 powerbi 站点(来自 Linux)
问题描述
我需要从非 MS 系统 (Linux) 查询远程 PowerBI 服务器。
我发现查询可以通过 JSON 发送,但我很难理解格式。例如,如何在给定 WHERE 和 LIKE 条件的情况下检索所有表列的内容?
这就是我想出的(不起作用):
{
"queries" : [
{
"ApplicationContext" : {
"Sources" : [
{
"ReportId" : "ZZZ"
}
],
"DatasetId" : "YYY"
},
"Query" : {
"Commands" : [
{
"SemanticQueryDataShapeCommand" : {
"Query" : {
"Where" : [
{
"Condition" : {
"In" : {
"Values" : [
[
{
"Like" : {
"Value" : "'%abc%'"
}
}
],
null
],
"Expressions" : [
{
"Column" : {
"Property" : "APROPERTY",
"Expression" : {
"SourceRef" : {
"Source" : "A"
}
}
}
}
]
}
}
}
],
"Select" : [
{
"Name" : "AVIEW.APROPERTY",
"Column" : {
"Expression" : {
"SourceRef" : {
"Source" : "A"
}
},
"Property" : "APROPERTY"
}
}
],
"Version" : "2",
"From" : [
{
"Name" : "A",
"Entity" : "AVIEW"
}
]
},
"Binding" : {
"Primary" : {
"Groupings" : [
{
"Projections" : [
"0",
"1"
]
}
]
},
"Version" : "1",
"DataReduction" : {
"DataVolume" : "3",
"Primary" : {
"Top" : {}
}
}
}
}
}
]
},
"QueryId" : ""
}
],
"cancelQueries" : [],
"modelId" : "XXX",
"version" : "1.0.0"
}
这是等效的 YAML,也许它更具可读性:
---
cancelQueries: []
modelId: XXX
queries:
- ApplicationContext:
DatasetId: YYY
Sources:
- ReportId: ZZZ
Query:
Commands:
- SemanticQueryDataShapeCommand:
Binding:
DataReduction:
DataVolume: 3
Primary:
Top: {}
Primary:
Groupings:
- Projections:
- 0
- 1
Version: 1
Query:
From:
- Entity: AVIEW
Name: A
Select:
- Column:
Expression:
SourceRef:
Source: A
Property: APROPERTY
Name: AVIEW.APROPERTY
Version: 2
Where:
- Condition:
In:
Expressions:
- Column:
Expression:
SourceRef:
Source: A
Property: APROPERTY
Values:
-
- Like:
Value: "'%abc%'"
-
QueryId: ''
version: 1.0.0
然后我使用curl
将带有适当标头的上述 JSON 数据发布到公共 url(不需要凭据),类似于<URL>/public/reports/querydata
. 这种查询方法通常有效,我成功完成了原始查询。但是现在我想创建更复杂的查询并碰壁,因为大多数文档都没有讨论这种查询语言,但它要么是基于 GUI 的,要么是需要安装专有软件的 command-let 和 DAX 功能。
我需要的是有关上述 JSON 的一些帮助和/或一些指向有关上述查询语言的文档的指针,我似乎无法找到,谢谢。
解决方案
我自己一直在对一些 PowerBI 查询进行逆向工程......在查询结构本身上没有给你一个确切的答案,但是结果中的“R”数据是一个位字段,它是某种压缩功能。它指示结果“C”数组中缺少哪些描述的字段。
我的方法可能正确也可能不正确,首先在给定位字段值的“C”数组中的相应位置插入空数组值,然后您有时可以使用相同的索引填充“缺失”字段前一行的“C”数组中的字段(通常当缺失的字符串值与前一行的重复时),并将缺失的数值保留为空。
推荐阅读
- javascript - RegEx 包含除 foo.js 和 bar.js 之外的所有 JavaScript 文件
- python - 使用列表中的项目作为空 pandas 数据框的名称
- unit-testing - 如何在 Rust 中运行特定的单元测试?
- python - 一旦脚本加载到另一个python文件中,有没有办法传递功能?
- reactjs - 如何在 react 16.0.0 中迁移 componentWillReceiveProps?
- ios - 滚动 Swift 4 时,Collectionview 上的图像混合在一起
- javascript - 如何在 Node JS 中搜索和替换字符串
- scala - 将日志记录添加到设置键时设置不能依赖于任务
- javascript - 将 magnificPopup 添加到动态创建的元素
- javascript - 提交时,此表单不会运行验证脚本