Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете, как считывать данные, метаданные и оценивать меры в семантических моделях с помощью библиотеки SemPy Python в Microsoft Fabric. Вы также узнаете, как записывать данные, которые могут использовать семантические модели.
Необходимые компоненты
Получение подписки Microsoft Fabric. Или зарегистрируйте бесплатную пробную версию Microsoft Fabric.
Войдите в Microsoft Fabric.
Перейдите в Fabric с помощью переключателя интерфейса в левой нижней части домашней страницы.
- Перейдите к интерфейсу обработки и анализа данных в Microsoft Fabric.
- Создайте записную книжку для копирования и вставки кода в ячейки.
- Для Spark 3.4 и более поздних версий семантическая ссылка доступна в среде выполнения по умолчанию при использовании Fabric и не требуется устанавливать ее. Если вы используете Spark 3.3 или ниже или хотите обновить до последней версии семантической ссылки, можно выполнить следующую команду:
python %pip install -U semantic-link - Добавление Lakehouse в записную книжку
- Скачайте Customer Profitability Sample.pbix семантическую модель из папки datasets репозитория fabric-samples и сохраните ее локально.
Отправка семантической модели в рабочую область
В этой статье используется семантическая модель семантики sample.pbix customer Profitability Sample.pbix . Семантическая модель ссылается на компанию, которая производит маркетинговые материалы. Она включает данные о продуктах, клиентах и доходах для различных бизнес-единиц.
- Откройте рабочую область в Fabric Data Science.
- Выберите > и выберите семантическую модель >.
После завершения загрузки ваша рабочая область включает три новых артефакта: отчет Power BI, панель мониторинга и семантическую модель под названием "Пример прибыльности клиента". Действия, описанные в этой статье, зависят от этой семантической модели.
Использование Python для чтения данных из семантических моделей
API Python SemPy может извлекать данные и метаданные из семантических моделей, расположенных в рабочей области Microsoft Fabric. API также может выполнять запросы на них.
Записная книжка, семантическая модель набора данных Power BI и Lakehouse могут находиться в одной рабочей области или в разных рабочих областях. По умолчанию SemPy пытается получить доступ к семантической модели из:
- Рабочая область lakehouse, если вы прикрепили lakehouse к записной книжке.
- Рабочая область записной книжки, если не подключена к Lakehouse.
Если семантическая модель не находится в любой из этих рабочих областей, необходимо указать рабочую область семантической модели при вызове метода SemPy.
Чтобы считывать данные из семантических моделей, выполните следующие действия.
Список доступных семантических моделей в рабочей области.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsСписок таблиц, доступных в модели семантики семантики рентабельности клиента.
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesПеречислить меры, определенные в модели семантики рентабельности клиента.
Совет
В следующем примере кода мы указали рабочую область для SemPy, используемую для доступа к семантической модели. Вы можете заменить
<Your Workspace>имя рабочей области, в которой вы отправили семантику (из раздела "Отправка семантической модели" в раздел рабочей области ).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresЗдесь мы определили, что таблица Customer является таблицей интересов.
Считывает таблицу Customer из семантической модели семантики рентабельности клиента.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableПримечание.
- Данные извлекаются с помощью XMLA, для чего необходимо активировать XMLA только для чтения.
- Объем извлекаемых данных ограничен: — максимальный объем памяти для каждого запроса SKU емкости, на котором размещена семантическая модель. — Узел драйвера Spark, который выполняет записную книжку (посетите размеры узлов для получения дополнительной информации).
- Все запросы используют низкий приоритет для минимизации влияния на производительность служб Microsoft Azure Analysis Services и выставляются в виде интерактивных запросов.
Оценка меры общего дохода для состояния и даты каждого клиента.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureПримечание.
- По умолчанию данные не извлекаются с помощью XMLA, поэтому нет необходимости включать режим только для чтения XMLA.
- Данные не подлежат ограничениям серверной части Power BI.
- Объем извлекаемых данных ограничен: — максимальный объем памяти для каждого запроса SKU емкости, в котором размещена семантическая модель. — Узел драйвера Spark, который выполняет записную книжку (посетите размеры узлов для получения дополнительной информации).
- Все запросы выставляются как интерактивные запросы.
- Функция
evaluate_daxне обновляет семантику модели. Дополнительные сведения см. на этой странице .
Чтобы добавить фильтры в вычисление мер, укажите список допустимых значений для определенного столбца.
filters = { "State[Region]": ["East", "Central"], "State[State]": ["FLORIDA", "NEW YORK"] } df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["Customer[State]", "Calendar[Date]"], filters=filters) df_measureОцените метрику общего дохода по состоянию клиентов и дате с помощью запроса DAX.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Примечание.
- Данные извлекаются с помощью XMLA, поэтому требуется включить только для чтения XMLA.
- Объем извлекаемых данных ограничен доступной памятью в Службах Microsoft Azure Analysis Services и узлом драйвера Spark ( дополнительные сведения см. в размерах узлов).
- Все запросы используют низкий приоритет для минимизации влияния на производительность служб Analysis Services и выставляются в виде интерактивных запросов.
Используйте магию ячейки
%%dax, чтобы оценить тот же запрос DAX без необходимости импортировать библиотеку. Запустите эту ячейку, чтобы загрузить%%daxмагию ячейки:%load_ext sempyПараметр рабочей области необязателен. Он следует тем же правилам, что и параметр
evaluate_daxрабочей области функции.Магия ячейки также поддерживает доступ к переменным Python с помощью синтаксиса
{variable_name}. Чтобы использовать фигурную скобку в запросе DAX, побежите ее с помощью другой фигурной скобки (например:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))Результирующий объект FabricDataFrame доступен через
_переменную. Эта переменная записывает выходные данные последней исполняемой ячейки.df_dax = _ df_dax.head()Можно добавить меры к данным, извлеченным из внешних источников. Этот подход объединяет три задачи:
- Он разрешает имена столбцов измерениям Power BI
- Определяет группу по столбцам
- Он фильтрует имена столбцов, которые не могут быть разрешены в данной семантической модели, игнорируются (дополнительные сведения см. в поддерживаемом ресурсе синтаксиса DAX).
from sempy.fabric import FabricDataFrame df = FabricDataFrame({ "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"], "Customer[Country/Region]": ["US", "GB", "US"], "Industry[Industry]": ["Services", "CPG", "Manufacturing"], } ) joined_df = df.add_measure("Total Revenue", dataset="Customer Profitability Sample") joined_df
Специальные параметры
SemPy read_table и evaluate_measure методы имеют больше параметров, которые полезны для управления выходными данными. Это следующие параметры.
-
pandas_convert_dtypes: если задано значениеTrue, pandas приводит результирующие столбцы DataFrame к лучшему возможному типу. Дополнительные сведения см. в convert_dtypes. Если этот параметр отключен, могут возникнуть проблемы несовместимости типов между столбцами связанных таблиц. Модель Power BI может не обнаружить эти проблемы из-за неявного преобразования типов DAX.
SemPy read_table также использует сведения о модели, которые предоставляет Power BI.
-
multiindex_hierarchies: если задано значениеTrue, он преобразует иерархии Power BI в структуру pandas MultiIndex.
Запись данных, потребляемых семантической моделью
Таблицы Spark, добавленные в Lakehouse, автоматически добавляются в соответствующую семантику по умолчанию. В этой статье показано, как записывать данные в подключенный хранилище данных Lakehouse.
FabricDataFrame принимает те же входные данные, что и DataFrame Pandas.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
С помощью Power BI таблица ForecastTable может быть добавлена в составную семантику модели, которая включает семантику Lakehouse.