Генерация кода 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  
      }  
   ]  
}
Следующая статья
Предыдущая статья

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

Открыт набор на наш новый онлайн-курс “R для интернет-маркетинга!”

Набор на новый поток курса по Power BI

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

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

Бесплатная шпаргалка по визуализации
Плакат Как что визуализировать
Сертификаты студентов курсов NeedForData.ru

© 2018    NeedForData