Руководство. Обнаружение связей в семантической модели с помощью семантической связи
В этом руководстве показано, как взаимодействовать с Power BI из записной книжки Jupyter и обнаруживать связи между таблицами с помощью библиотеки SemPy.
В этом руководстве описано следующее:
- Обнаружение связей в семантической модели (набор данных Power BI) с помощью библиотеки Python семантической ссылки (SemPy).
- Используйте компоненты SemPy, поддерживающие интеграцию с Power BI и помогающие автоматизировать анализ качества данных. К этим компонентам относятся:
- FabricDataFrame — структура, похожая на pandas, улучшена с дополнительной семантической информацией.
- Функции для извлечения семантических моделей из рабочей области Fabric в записную книжку.
- Функции, автоматизирующие оценку гипотез о функциональных зависимостях и определяющие нарушения связей в семантических моделях.
Необходимые компоненты
Получение подписки Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.
Войдите в Microsoft Fabric.
Используйте переключатель интерфейса в левой части домашней страницы, чтобы перейти на интерфейс Synapse Обработка и анализ данных.
Выберите рабочие области в области навигации слева, чтобы найти и выбрать рабочую область. Эта рабочая область становится текущей рабочей областью.
Скачайте пример прибыльности клиента Sample.pbix и пример рентабельности клиента (авто).pbix семантические модели из репозитория GitHub для примеров структуры и отправьте их в рабочую область.
Следуйте инструкциям в записной книжке
Записная книжка powerbi_relationships_tutorial.ipynb сопровождает это руководство.
Чтобы открыть сопровождающую записную книжку для этого руководства, следуйте инструкциям в статье "Подготовка системы для обработки и анализа данных", чтобы импортировать записную книжку в рабочую область.
Если вы хотите скопировать и вставить код на этой странице, можно создать новую записную книжку.
Перед запуском кода обязательно подключите lakehouse к записной книжке .
Настройка записной книжки
В этом разделе описана настройка среды записной книжки с необходимыми модулями и данными.
Установите из PyPI с помощью
%pip
встроенной возможности установкиSemPy
в записной книжке:%pip install semantic-link
Выполните необходимые импорты модулей SemPy, которые потребуются позже:
import sempy.fabric as fabric from sempy.relationships import plot_relationship_metadata from sempy.relationships import find_relationships from sempy.fabric import list_relationship_violations
Импорт pandas для применения параметра конфигурации, который помогает с форматированием выходных данных:
import pandas as pd pd.set_option('display.max_colwidth', None)
Изучение семантических моделей
В этом руководстве используется стандартная семантическая модель Customer Profitability Sample.pbix. Описание семантической модели см . в примере рентабельности клиентов для Power BI.
Используйте функцию SemPy
list_datasets
для изучения семантических моделей в текущей рабочей области:fabric.list_datasets()
Для остальной части этой записной книжки используется две версии семантической модели рентабельности клиентов:
- Пример рентабельности клиента: семантическая модель, исходя из примеров Power BI с предопределенными связями таблиц
- Пример рентабельности клиента (auto): одни и те же данные, но связи ограничены теми, которые Power BI будет автоматически выполнять.
Извлечение примера семантической модели с помощью предопределенной семантической модели
Связи загрузки, которые предварительно определены и хранятся в модели семантики рентабельности клиента, используя функцию SemPy
list_relationships
. Эта функция выводит список из табличной объектной модели:dataset = "Customer Profitability Sample" relationships = fabric.list_relationships(dataset) relationships
Визуализация кадра
relationships
данных в виде графаplot_relationship_metadata
с помощью функции SemPy:plot_relationship_metadata(relationships)
На этом графике показана "правды земли" для связей между таблицами в этой семантической модели, так как она отражает, как они были определены в Power BI экспертом по темам.
Дополнение к обнаружению связей
Если вы начали с связей, которые power BI автоматически определили, у вас будет меньший набор.
Визуализация связей, которые Power BI автоматически определяется в семантической модели:
dataset = "Customer Profitability Sample (auto)" autodetected = fabric.list_relationships(dataset) plot_relationship_metadata(autodetected)
Автоопределение Power BI пропускало много связей. Кроме того, две из автоматически определенных связей являются семантической ошибкой:
Executive[ID]
->Industry[ID]
BU[Executive_id]
->Industry[ID]
Печать связей в виде таблицы:
autodetected
Неправильные связи с таблицей
Industry
отображаются в строках с индексом 3 и 4. Используйте эти сведения для удаления этих строк.Дис карта неправильно определенных связей.
autodetected.drop(index=[3,4], inplace=True) autodetected
Теперь у вас есть правильные, но неполные отношения.
Визуализация этих неполных связей с помощью
plot_relationship_metadata
:plot_relationship_metadata(autodetected)
Загрузите все таблицы из семантической модели с помощью semPy
list_tables
иread_table
функций:tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
Найдите связи между таблицами, используя
find_relationships
и просмотрите выходные данные журнала, чтобы узнать, как работает эта функция:suggested_relationships_all = find_relationships( tables, name_similarity_threshold=0.7, coverage_threshold=0.7, verbose=2 )
Визуализировать только что обнаруженные связи:
plot_relationship_metadata(suggested_relationships_all)
SemPy смог обнаружить все связи.
exclude
Используйте параметр, чтобы ограничить поиск дополнительными связями, которые ранее не были идентифицированы:additional_relationships = find_relationships( tables, exclude=autodetected, name_similarity_threshold=0.7, coverage_threshold=0.7 ) additional_relationships
Проверка связей
Сначала загрузите данные из модели семантики рентабельности клиента:
dataset = "Customer Profitability Sample" tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']} tables.keys()
Проверьте перекрытие значений первичного и внешнего ключа с помощью
list_relationship_violations
функции. Укажите выходные данныеlist_relationships
функции в качестве входных данныхlist_relationship_violations
:list_relationship_violations(tables, fabric.list_relationships(dataset))
Нарушения связей предоставляют некоторые интересные сведения. Например, один из семи значений
Fact[Product Key]
не присутствует в , и этот отсутствующий ключ имеетсяProduct[Product Key]
50
.
Анализ аналитических данных — это захватывающий процесс, поэтому очистка данных. Всегда есть что-то, что данные скрываются, в зависимости от того, как вы посмотрите на него, что вы хотите попросить, и т. д. Семантическая ссылка предоставляет новые средства, которые можно использовать для получения дополнительных возможностей с данными.
Связанный контент
Ознакомьтесь с другими руководствами по семантической ссылке / SemPy:
- Руководство. Очистка данных с помощью функциональных зависимостей
- Руководство. Анализ функциональных зависимостей в примере семантической модели
- Руководство. Извлечение и вычисление мер Power BI из записной книжки Jupyter
- Руководство. Обнаружение связей в наборе данных Synthea с помощью семантической ссылки
- Руководство по проверке данных с помощью SemPy и великих ожиданий (GX) (предварительная версия)