Итак, вы хотите научить Power BI новым трюкам на базе R? Приготовьтесь, повелитель данных — мы собираемся превратить эту платформу бизнес-аналитики в вашу личную аналитическую площадку. К тому времени, как мы закончим, вы будете создавать собственные визуализации, которые заставят стандартные диаграммы выглядеть как наскальные рисунки.
Предварительные требования: ваш волшебный инструментарий
Прежде чем мы начнём изменять Матрицу (ту, что с данными, а не версию Киану), соберите следующие необходимые вещи:
- Power BI Desktop (бесплатная версия вполне подойдёт);
- R версии 3.4.4 или новее — скачайте его с CRAN;
- RStudio (необязательно, но рекомендуется);
- Кофе (обязательно; замените чаем, если вы такой волшебник).
Настройка вашего котла
Сначала давайте заставим Power BI и R работать вместе. Перейдите в:
Файл > Параметры > R scripting
.
Здесь вы указываете Power BI, где находится ваша установка R. Если она не обнаружит автоматически путь к R, просто укажите ей путь к домашнему каталогу R — это как настроить магический портал между измерениями.
Совет: если вы заблудились, просто прошепчите «library(ggplot2)» три раза, и духи данных могут помочь.
Создание вашего первого расширения на базе R
Давайте создадим анализатор социальных сетей, который заставил бы Марка Цукерберга ревновать. Запустите свой любимый редактор кода и давайте приступим.
Шаг 1: ядро сценария R
Создайте social_network.R
с этим тайным заклинанием:
# Здесь начинается чёрная магия
create_network <- function(dataset, num_records=100) {
require(igraph)
# Фильтрация верхних связей
top_connections <- head(dataset[order(-dataset$connection_strength), ], num_records)
# Создание объекта графа
g <- graph_from_data_frame(top_connections, directed=FALSE)
# Добавление визуального эффекта
V(g)$size <- degree(g) * 2
E(g)$width <- E(g)$connection_strength / 10
plot(g, layout=layout_with_fr)
}
Эта маленькая функция берёт данные о связях и преобразует их в интерактивную сетевую визуализацию. Параметр num_records
позволяет пользователям контролировать, сколько соединений отображать — потому что иногда нужно уменьшить уровень хаоса.
Шаг 2: интеграция с Power BI
Теперь нам нужно, чтобы Power BI поняла нашу магию на R. Измените файл capabilities.json
:
"dataRoles": [
{
"displayName": "Набор данных",
"name": "dataset",
"kind": "GroupingOrMeasure",
"description": "От, До, Сила связи"
},
{
"displayName": "Ограничение записи",
"name": "num_records",
"kind": "Measure",
"description": "Максимальное количество отображаемых соединений"
}
],
"dataViewMappings": [{
"conditions": [
{"dataset": {"max": 1}, "num_records": {"max": 1}}
],
"scriptResult": {
"dataInput": {
"table": {
"rows": {"select": [{"for": {"in": "dataset"}}]}
}
}
}
}]
Эта конфигурация сообщает Power BI: «Вот какие входные данные мне нужны, и вот как с ними обращаться». Это как учить собаку новым трюкам, только с большим количеством JSON и меньшим вилянием хвостом.
Подготовка к работе в продакшене
Перед тем как выпустить этот шедевр, добавьте обработку ошибок, если только вам не нравятся ночные звонки в службу поддержки:
create_network <- function(dataset, num_records=100) {
tryCatch({
# Предыдущий код здесь
}, error = function(e) {
plot(0, 0, type='n', axes=FALSE, xlab=NA, ylab=NA)
text(0, 0, "Абракадабра не удалась!\nПроверьте ваши входные данные", cex=1.2, col="red")
})
}
Теперь даже если пользователи предоставят ему неверные данные, они получат дружеское сообщение об ошибке вместо вызова Ктулху.
Развёртывание вашего шедевра
Упакуйте своё расширение, выполнив следующие действия:
- Заархивируйте свой сценарий R и файлы JSON.
- Переименуйте в
.pbiviz
. - Импортируйте в Power BI через Импорт визуализации из файла. Предупреждение: у коллег может внезапно развиться «зависть к расширению», когда они увидят ваше творение в действии.
От кода до корпоративного успеха
Помните, как вы потратили три часа на форматирование базовой столбчатой диаграммы? Те времена прошли. С расширениями R вы можете:
- Визуализировать сложные сети за секунды;
- Создавать информационные панели с прогнозной аналитикой;
- Строить пользовательские геопространственные визуализации;
- Впечатлить своего руководителя навыками «алхимии данных». Истинная мощь заключается в объединении статистической мощи R с охватом предприятия Power BI. Это как дать ракетницу аналитику данных — в лучшем виде. В следующий раз, когда кто-то попросит «что-нибудь более впечатляющее», чем круговая диаграмма, просто улыбнитесь и загрузите своё кастомное расширение. Они больше никогда не согласятся на базовые визуализации. Только постарайтесь не хихикать как маньяк, когда у них отвиснет челюсть — это смущает отдел кадров.