Что, если наименования товара или объекта для пользователя не достаточно и хочется качественных изображений в Power BI? Разберем несколько способов вставить картинку в отчет, чтобы сделать вашу аналитику интуитивно понятной и красочной.
Для начала, определимся с источником данных - они могут быть:
- Локальные (требуют установки и настройки шлюза):
- на вашем жестком диске,
- в директории на сервере организации.
- Онлайн:
- Google Drive (самый простой способ получения картинок в Power BI),
- OneDrive (есть сложности при подключении папки в Power Query),
- Сервис imgbb и иные порталы.
Локальные изображения в Power BI
Создайте директорию на вашем компьютере или сервере, где будут размещены фотографии. После загрузки изображений убедитесь, что каждое из них не превышает размер 450 Кб. Это важно для работы с методом преобразования Base64. Уменьшить изображения вы можете через интернет порталы без потери видимого качества.
Скопируйте путь к папке, чтобы вставить его в запрос:
В PQ создайте новый пустой запрос и с помощью расширенного редактора поместите в тело запроса этот код:
let
//Получаем список файлов в папке
Source = Folder.Files("C:\Users\maffa\OneDrive\Рабочий стол\Картинки"),
//Удаляем другие столбцы
RemoveOtherColumns = Table.SelectColumns(Source,{"Content", "Name"}),
//Создаем функцию с длинной текста в 30 000 символов
SplitTextFunction = Splitter.SplitTextByRepeatedLengths(30000),
//Транспонируем таблицу в строки
ListInput = Table.ToRows(RemoveOtherColumns),
//Функция для конвертации картинок в бинарный текст
ConvertOneFile = (InputRow as list) =>
let
BinaryIn = InputRow{0},
FileName = InputRow{1},
BinaryText = Binary.ToText(BinaryIn, BinaryEncoding.Base64),
SplitUpText = SplitTextFunction(BinaryText),
AddFileName = List.Transform(SplitUpText, each {FileName,_})
in
AddFileName,
//Конвертируем все файлы по функции выше
ConvertAllFiles = List.Transform(ListInput, each ConvertOneFile(_)),
//Комбинируем в список
CombineLists = List.Combine(ConvertAllFiles),
//Конвертируем результат в таблицу
ToTable = #table(type table[Name=text,Pic=text],CombineLists),
//Добавляем индекс, чтобы понимать в каком порядке собирать строки в целый кусок
AddIndexColumn = Table.AddIndexColumn(ToTable, "Index", 0, 1),
#"Строки с примененным фильтром" = Table.SelectRows(AddIndexColumn, each ([Name] <> "Картинка - объект.xlsx"))
in
#"Строки с примененным фильтром"
Этот запрос после подключения к источнику изображений преобразует их в Base64 строку, разбивая на несколько записей для сохранения качества картинки. Чем больше символов, тем больше пикселей на выходе.
Анонсы всех видео, статей и полезностей - в нашем Telegram🔥
Присоединяйтесь, обсуждайте и автоматизируйте!
Закрываем редактор Power Query и переходим к написанию меры, которая объединяет все строки кодировки картинки по полю имя и присоединяет к префиксу data:image/jpeg;base64.
Display Image =
IF(
HASONEVALUE('Запрос1'[Name]),
"data:image/jpeg;base64, " &
CONCATENATEX(
'Запрос1',
'Запрос1'[Pic],
,
'Запрос1'[Index],
ASC
)
)
Обратите внимание: требуется установить категорию данных "URL-адрес изображения" для измерения, чтобы в визуальном элементе она отображалась не как текст:
Устанавливаем визуал Image Pro by CloudScope и вставляем измерение Display Image в поле Image url:
Чтобы сопоставить изображения со значениями вашего отчета, необходимо создать справочник. С его помощью вы сможете переключать изображения соответственно значениям вашего набора данных:
Картинки в Power BI из Google Drive, One Drive и других источников
Для подключения к адресам изображений в онлайн-источниках необходимо создать справочник сопоставления адреса изображения с объектом. Ниже мы привели скриншот уже преобразованных ссылок:
Преобразование ссылки файлов из гугл диска проходит в несколько итераций:
1. Скопируйте ссылку на объект. Для этого правой кнопкой мыши нажмите на фотографию - Получить ссылку - Копировать ссылку:
2. Поместите ссылку в справочник
3. Преобразуйте ссылку следующим образом:
Исходная ссылка:
https://drive.google.com/file/d/1PSEQPJE6oGTaBmDL5pOyKYLD0m00229F/view?usp=share_link
Вырезаем код ссылки на картинку между последними двумя слэшами //
1PSEQPJE6oGTaBmDL5pOyKYLD0m00229F
Добавляем к нужному началу ссылки. Оно другое! Как тут:
https://drive.google.com/uc?id=1PSEQPJE6oGTaBmDL5pOyKYLD0m00229F
4. Назначаем Столбцу категорию данных "URL-адрес изображения"
Устанавливаем визуал Image Pro by CloudScope и вставляем измерение Display Image в поле Image url:
Заключение
В этой статье мы разобрали способы подключения к изображениям в Power BI, а также все нюансы для решения проблемы с разрешением.
Перед загрузкой картинок убедитесь, что вес каждого файла не превышает 450 Кб. Также, обратите внимание, что запрос на локальное подключение автоматически собирает новые объекты, а в случае с онлайн-источниками, вам придется поддерживать актуальность справочника вручную.
Комментарии