Поделиться через


Руководство. Обнаружение связей в семантической модели с помощью семантической связи

В этом руководстве показано, как взаимодействовать с 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 к записной книжке .

Настройка записной книжки

В этом разделе описана настройка среды записной книжки с необходимыми модулями и данными.

  1. Установите из PyPI с помощью %pip встроенной возможности установки SemPy в записной книжке:

    %pip install semantic-link
    
  2. Выполните необходимые импорты модулей 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
    
  3. Импорт 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 будет автоматически выполнять.

Извлечение примера семантической модели с помощью предопределенной семантической модели

  1. Связи загрузки, которые предварительно определены и хранятся в модели семантики рентабельности клиента, используя функцию SemPy list_relationships . Эта функция выводит список из табличной объектной модели:

    dataset = "Customer Profitability Sample"
    relationships = fabric.list_relationships(dataset)
    relationships
    
  2. Визуализация кадра relationships данных в виде графа plot_relationship_metadata с помощью функции SemPy:

    plot_relationship_metadata(relationships)
    

    Снимок экрана: график связей между таблицами в семантической модели.

На этом графике показана "правды земли" для связей между таблицами в этой семантической модели, так как она отражает, как они были определены в Power BI экспертом по темам.

Дополнение к обнаружению связей

Если вы начали с связей, которые power BI автоматически определили, у вас будет меньший набор.

  1. Визуализация связей, которые Power BI автоматически определяется в семантической модели:

    dataset = "Customer Profitability Sample (auto)"
    autodetected = fabric.list_relationships(dataset)
    plot_relationship_metadata(autodetected)
    

    Снимок экрана: связи, которые Power BI автоматически определяется в семантической модели.

    Автоопределение Power BI пропускало много связей. Кроме того, две из автоматически определенных связей являются семантической ошибкой:

    • Executive[ID] ->Industry[ID]
    • BU[Executive_id] ->Industry[ID]
  2. Печать связей в виде таблицы:

    autodetected
    

    Неправильные связи с таблицей Industry отображаются в строках с индексом 3 и 4. Используйте эти сведения для удаления этих строк.

  3. Дис карта неправильно определенных связей.

    autodetected.drop(index=[3,4], inplace=True)
    autodetected
    

    Теперь у вас есть правильные, но неполные отношения.

  4. Визуализация этих неполных связей с помощью plot_relationship_metadata:

    plot_relationship_metadata(autodetected)
    

    Снимок экрана: визуализация связей после удаления неправильных.

  5. Загрузите все таблицы из семантической модели с помощью semPy list_tables и read_table функций:

    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  6. Найдите связи между таблицами, используя find_relationshipsи просмотрите выходные данные журнала, чтобы узнать, как работает эта функция:

    suggested_relationships_all = find_relationships(
        tables,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7,
        verbose=2
    )
    
  7. Визуализировать только что обнаруженные связи:

    plot_relationship_metadata(suggested_relationships_all)
    

    Снимок экрана: визуализация недавно обнаруженных связей.

    SemPy смог обнаружить все связи.

  8. exclude Используйте параметр, чтобы ограничить поиск дополнительными связями, которые ранее не были идентифицированы:

    additional_relationships = find_relationships(
        tables,
        exclude=autodetected,
        name_similarity_threshold=0.7,
        coverage_threshold=0.7
    )
    
    additional_relationships
    

Проверка связей

  1. Сначала загрузите данные из модели семантики рентабельности клиента:

    dataset = "Customer Profitability Sample"
    tables = {table: fabric.read_table(dataset, table) for table in fabric.list_tables(dataset)['Name']}
    
    tables.keys()
    
  2. Проверьте перекрытие значений первичного и внешнего ключа с помощью list_relationship_violations функции. Укажите выходные данные list_relationships функции в качестве входных данных list_relationship_violations:

    list_relationship_violations(tables, fabric.list_relationships(dataset))
    

    Нарушения связей предоставляют некоторые интересные сведения. Например, один из семи значений Fact[Product Key] не присутствует в , и этот отсутствующий ключ имеетсяProduct[Product Key]50.

Анализ аналитических данных — это захватывающий процесс, поэтому очистка данных. Всегда есть что-то, что данные скрываются, в зависимости от того, как вы посмотрите на него, что вы хотите попросить, и т. д. Семантическая ссылка предоставляет новые средства, которые можно использовать для получения дополнительных возможностей с данными.

Ознакомьтесь с другими руководствами по семантической ссылке / SemPy: