Генерация кода JSON в Power BI и Power Query

Текст представляет собой адаптированный перевод статьи Chris Webb (Крис Вебб), оригинал — Generating JSON In Power BI And Power Query. Рассматривается англоязычный Power Query.

Об авторе

Крис Вебб (Chris Webb) — независимый эксперт, консультант по технологиям Analysis Services, MDX, Power Pivot, DAX, Power Query и Power BI. Его блог — это кладезь информации на тему перечисленных технологий. Вот уже более 10 лет он пишет про BI-решения от Microsoft. Количество его статей перевалило за 1000! Также Крис выступает на большом количестве различных конференций вроде SQLBits, PASS Summit, PASS BA Conference, SQL Saturdays и участвует в различных сообществах.
Крис любезно разрешил нам переводить его статьи на русский язык. И это одна из них.

Генерация кода JSON в Power BI и Power Query

Часто при вызове веб-сервисов из Power BI или Power Query требуется встроить в запрос код JSON. Язык М легко позволяет сделать это с помощью функции Json.FromValue(), но в справке приведён только один пример по этой функции.
В данной статье мы рассмотрим несколько примеров как работать с Json.FromValue().

Для начала, вот код функции, которую мы назвали GetJson(). Она принимает параметр – данные любого типа, передаёт их в Json.FromValue() и возвращает JSON представление входных данных в виде текста.

(InputData) =>  
let  
      JsonOutput = Json.FromValue(InputData),  
      OutputText = Text.FromBinary(JsonOutput)  
in  
      OutputText  

Теперь давайте посмотрим, что возвращается для различных типов данных.

Таблицы

Возьмём следующую таблицу на листе, пусть она называется «Sales»:

p1.png

Следующий запрос берёт данные из нашей таблицы и вызывает функцию GetJson(), определённую выше:

let  
      Source = Excel.CurrentWorkbook(){[Name="Sales"]}[Content],  
      #"Changed Type" = Table.TransformColumnTypes(  
      Source,  
      {{"Month", type text}, {"Sales", Int64.Type}}),  
      Output = GetJson(#"Changed Type")   
in  
      Output  

Он возвращает JSON-массив объектов:

[  
{"Month":"January","Sales":1},  
{"Month":"February","Sales":2},  
{"Month":"March","Sales":3}  
]  

Списки

Списки языка М представлляются как JSON-массивы, arrays, поэтому запрос:

GetJson({"Apples", "Oranges", "Pears"})  

…возвращает

["Apples","Oranges","Pears"]  

и

GetJson({{1,"Apples"}, {2,"Oranges"}, {3,"Pears"}})

…возвращает

[[1,"Apples"],[2,"Oranges"],[3,"Pears"]]  

Записи

Записи языка М представляются как JSON-объекты, поэтому:

GetJson([month="January", product="Apples", sales=1])  

…возвращает

{"month":"January","product":"Apples","sales":1}  

Вложенные Данные

Наконец, в языке М возможны вложенные структуры данных: списки таблиц, записи, содержащие списки и т.д. Они также могут быть преобразованы в формат JSON.
В нижепредставленном примере запись содержит текстовое значение, список и таблицу (созданную с помощью #table):

GetJson(  
[  
   product="Apples",  
   colours={"Red","Green"},  
   sales=  
      #table({"Month", "Sales"},  
         {  
            {"January", 1},  
            {"February", 2}  
         }  
      )  
   ]  
)  

…JSON-код:

{  
   "product":"Apples",  
   "colours":[  
      "Red",  
      "Green"  
   ],  
   "sales":[  
      {  
         "Month":"January",  
         "Sales":1  
      },  
      {  
         "Month":"February",  
         "Sales":2  
      }  
   ]  
}
Следующая статья
Предыдущая статья

Комментирование закрыто.

Подпишитесь на нашу рассылку, чтобы не пропустить новые статьи!

Подписка на рассылку NeedForData

Присоединяйтесь к нам на Facebook:
Бесплатная шпаргалка по визуализации
Плакат Как что визуализировать

Плакат Как что визуализировать

© 2017    NeedForData