Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✅ конечная точка аналитики SQL и хранилище в Microsoft Fabric
Пользовательские пулы SQL обеспечивают администраторам больше контроля над тем, как ресурсы выделяются для обработки запросов. В этом кратком руководстве вы настроите настраиваемые пулы SQL и просмотрите значения классификатора с помощью REST API Fabric.
Администраторы рабочей области могут использовать имя приложения (или имя программы) из строки подключения для маршрутизации запросов к разным вычислительным пулам. Администраторы рабочих областей также могут контролировать процент ресурсов, который каждый вычислительный пул SQL может использовать на основе лимита кратковременного масштабирования емкости рабочей области.
REST API Fabric определяет единую конечную точку для операций.
Необходимые условия
- Доступ к объекту хранилища в рабочей области. Вы должны быть членом роли администратора.
Получение текущей конфигурации
Чтобы получить текущую конфигурацию, используйте следующий API.
Пример блокнота Fabric
В записной книжке Fabric Spark можно запустить следующий пример кода Python.
- Код отправляет
GETзапрос в API конфигурации настраиваемого пула SQL и возвращает настраиваемую конфигурацию пула SQL для рабочей области. - Поле
workspace_idиспользуетmssparkutils.runtime.contextдля получения GUID рабочей области, в которой выполняется записная книжка. Чтобы настроить пользовательский пул SQL в другой рабочей области, обновитеworkspace_idна GUID рабочей области, в которой нужно настроить пользовательские пулы SQL.
import requests
import json
from notebookutils import mssparkutils
# This will get the workspace_id where this notebook is running.
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspaceId = mssparkutils.runtime.context.get('currentWorkspaceId')
url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='get', url=url, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})
if response.status_code == 200:
print(json.dumps(response.json(), indent=4))
else:
print(response.text)
Настройка настраиваемых пулов SQL
Следующий пример Python включает и настраивает настраиваемые пулы SQL. Этот код Python можно запустить в записной книжке Fabric Spark.
- Конфигурация настраиваемых пулов SQL активна только в том случае, если
customSQLPoolsEnabledдля атрибута задано значение true. Вы можете задать полезную нагрузку вcustomSQLPoolsопределении объекта, но если customSQLPoolsEnabled не установлено в true, полезная нагрузка игнорируется и используется автономное управление рабочими нагрузками. - Код настраивает два SQL-пула:
ContosoSQLPoolиAdhocPool.- Установлено, что
ContosoSQLPoolполучит 70% доступных ресурсов. Классификатор имени приложения имеет значениеMyContosoApp. - Все запросы SQL, поступающие из строки подключения, указывающей
MyContosoAppимя приложения, классифицируются вContosoSQLPoolнастраиваемый пул SQL и имеют доступ к 70% общих узлов емкости с возможностью ускорения. - Все запросы SQL, в имени приложения строки подключения которых не содержится
MyContosoApp, отправляются вAdhocпользовательский пул SQL, который определяется как пул по умолчанию. Эти запросы получают доступ к 30% всех узлов с возможностью временного увеличения мощности.
- Установлено, что
- Все пользовательские конфигурации пула SQL должны иметь один пул SQL по умолчанию, идентифицируемый путем задания атрибута
isDefaulttrue. - Сумма всех
maxResourcePercentageзначений должна быть меньше или равна 100%. - Поле
workspace_idиспользуетmssparkutils.runtime.contextдля получения GUID рабочей области, в которой выполняется записная книжка. Чтобы настроить пользовательский пул SQL в другой рабочей области, обновитеworkspace_idна GUID рабочей области, в которой нужно настроить пользовательские пулы SQL.
import requests
import json
from notebookutils import mssparkutils
body = {
"customSQLPoolsEnabled": True,
"customSQLPools": [
{
"name": "ContosoSQLPool",
"isDefault": False,
"maxResourcePercentage": 70,
"optimizeForReads": False,
"classifier": {
"type": "Application Name",
"value": [
"MyContosoApp"
]
}
},
{
"name": "AdhocPool",
"isDefault": True,
"maxResourcePercentage": 30,
"optimizeForReads": True
}
]
}
# This will get the workspaceId where this notebook is running.
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspace_id = mssparkutils.runtime.context.get('currentWorkspaceId')
url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='patch', url=url, json=body, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})
if response.status_code == 200:
print("SQL Custom Pools configured successfully.")
else:
print(response.text)
Подсказка
Используйте следующие полезные значения классификатора названия приложения (regex) для трафика из Fabric.
- Чтобы классифицировать запросы из конвейеров Fabric, используйте
^Data Integration-to[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$. - Чтобы классифицировать запросы из Power BI, используйте
^(PowerBIPremium-DirectQuery|Mashup Engine(?: \(PowerBIPremium-Import\))?). - Чтобы классифицировать запросы из редактора запросов SQL на портале Fabric, используйте
DMS_user.
Установка имени приложения в среде SQL Server Management Studio (SSMS)
Классификатор для настраиваемых пулов SQL использует параметр наименования приложения или программы в типовых строках подключения.
В SQL Server Management Studio (SSMS) укажите имя сервера для хранилища и предоставьте данные для аутентификации. Рекомендуется Microsoft Entra MFA.
Нажмите кнопку "Дополнительно ".
На странице "Дополнительные свойства" в разделе "Контекст" измените значение имени
MyContosoAppприложения на .Нажмите ОК.
Нажмите Подключиться.
Чтобы создать некоторые примеры действий, используйте это подключение в SSMS для выполнения простого запроса в хранилище, например:
SELECT * FROM dbo.DimDate;
Анализировать аналитические сведения о запросах в пользовательском SQL-пуле
Просмотрите динамическое
sys.dm_exec_sessionsпредставление управления, чтобы увидеть, чтоMyContosoAppраспознается как имя приложения, переданное из SSMS в подсистему SQL.SELECT session_id, program_name FROM sys.dm_exec_sessions WHERE program_name = 'MyContosoApp';Рассмотрим пример.
Поскольку
program_nameсоответствует имени приложения вMyContosoAppпользовательском SQL-пуле, этот запрос использует ресурсы в этом пуле. Чтобы доказать, какой пользовательский пул SQL использовал запрос, можно запросить системное представление queryinsights.exec_requests_history. Подождите 10–15 минут, чтобы аналитические сведения о запросах заполнялись, а затем выполните следующий запрос.SELECT distributed_statement_id, submit_time, program_name, sql_pool_name, start_time, end_time FROM queryinsights.exec_requests_history WHERE program_name = 'MyContosoApp';Вы также можете определить пул для запроса, используя его идентификатор запроса. В редакторе SQL-запросов портала Fabric выполните запрос к конечной точке хранилища или аналитики SQL.
SELECT * FROM dbo.DimDate;Выберите вкладку "Сообщения" и запишите идентификатор инструкции для выполнения запроса. В редакторе запросов SQL
program_nameDMS_user, который вы ранее настроили на использование пользовательского пула SQLMyContosoApp.Подождите 10–15 минут, чтобы аналитические сведения о запросах заполнились.
Получите
sql_pool_nameи другие сведения, чтобы убедиться, что был использован правильный пользовательский пул SQL.SELECT distributed_statement_id, submit_time, program_name, sql_pool_name, start_time, end_time FROM queryinsights.exec_requests_history WHERE distributed_statement_id = '<Statement ID>';
Возврат конфигурации настраиваемых пулов SQL
Чтобы вернуть рабочую область в исходное состояние, измените свойство customSQLPoolsEnabledна False . Если вы хотите сохранить конфигурацию настраиваемых пулов SQL, необходимо передать имя каждого пула, как в списке customSQLPools .
В этом примере код Python отключает пользовательские пулы SQL и возвращается к конфигурации автономного управления рабочими нагрузками с использованием SELECT и непуловыми SELECT. Запрос PATCH выполняется с заданным customSQLPoolsEnabled свойством False.
import requests
import json
from notebookutils import mssparkutils
body = {
"customSQLPoolsEnabled": False,
"customSQLPools": []
}
# This will get the workspaceId where this notebook is running.
# Update to the workspace_id (guid) if running this notebook outside of the workspace where the warehouse exists.
workspace_id = mssparkutils.runtime.context.get('currentWorkspaceId')
url = f'https://api.fabric.microsoft.com/v1/workspaces/{workspace_id}/warehouses/sqlPoolsConfiguration?beta=true'
response = requests.request(method='patch', url=url, json=body, headers={'Authorization': f'Bearer {mssparkutils.credentials.getToken("pbi")}'})
if response.status_code == 200:
print("SQL Custom Pools successfully disabled.")
else:
print(response.text)