Опрос Powerbi сайта с использованием REST или JSON (из Linux) - PullRequest
1 голос
/ 11 апреля 2020

Мне нужно запросить удаленный сервер PowerBI из системы, отличной от MS (Linux).

Я обнаружил, что запросы можно отправлять через 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 c (учетные данные не требуются), что является чем-то как <URL>/public/reports/querydata. Этот метод запроса обычно работает, и мне удалось выполнить оригинальный запрос. Но теперь я хочу создать более сложные запросы и просто попасть в эту стену, потому что большая часть документации не говорит об этом языке запросов, но это либо основанные на GUI, либо командные функции и функции DAX, для которых необходимо установить проприетарное программное обеспечение.

Что мне нужно, так это некоторая помощь по вышеуказанному JSON и / или некоторые ссылки на документацию, касающуюся вышеупомянутого языка запросов, которую я не могу найти, спасибо.

...