Если вам приходилось работать со списками SharePoint List, далее загружать данные списка для анализа в Power BI, то можно было столкнуться с трудностью вывода данных из объектных представлений типа List
и/или Record
. Решение этой задачи может быть разное, но я покажу способ, который я заимствовал и в дальнейшем использовал практически всегда.
Выделяем данные из List->Record одной формулой
Допустим у вас есть список, в котором хранятся данные о менеджерах в виде списка (List
). При организации модели данных требуется перейти в режим работы с запросами на уровне Power Query.
Задача сводится к тому, чтобы создать Пользовательский столбец/ Сustom Column
и в качестве формулы указать такую формулу (DAX/M Code):
let typeList = [types],
typeCount = List.Count([types]) in Text.Combine(List.Transform(List.Numbers(0, typeCount, 1),
each Record.Field(typeList{_},"Name")), ", ")
Поясню немного про список: [types]
- это наименование поля с объектом List
. Вы указываете имя своего поля с таким типом. Как видите, в формуле вам нужно обратиться дважды к полю и "Name"
- это наименование целевого поля вывода из List->Record
. предварительно вам нужно посмотреть, кликая мышкой на значения этих данных целевое поле для вывода из массива, хранимого в Record
. Не могу сказать за другие объектные модели данных, но в SharePoint структуру можно представить в виде простой иерархии:
|-- List/
| |-- Record
| |-- Name
| |-- Data
| |-- email
В этой формуле нет обработки на ошибки, например если есть пустые значения в результирующем поле Name
. Для нивелирования этой проблемы можете использовать конcтрукцию try ... otherwise
.
Выделяем данные из Record
Эта задача гораздо проще предыдущей и тоже нередко используется при работе с данными из списков SharePoint. Приведу пример формулы получения данных записи из поля с типом Record
.
try Record.Field([MyField]{0},"title") otherwise ""
В этой формуле [MyField]
- поле с данными типа Record
, а в записи мне нужно значение поля "title". Использование конструкции try ... otherwise
позволяет обработать корректно массив запрашиваемых данных, даже если там есть ошибки в значениях, выводя для таких записей пустое текстовое значение ""
.