Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:✅ конечная точка аналитики SQL в Microsoft Fabric
В этом руководстве описано, как создать конвейер Microsoft Fabric для выполнения интеллектуального обслуживания таблиц.
Это решение вызывает хранимую процедуру T-SQL sys.sp_get_table_health_metrics в конечной точке SQL-аналитики Lakehouse, оценивает результат и запускает OPTIMIZE только тогда, когда таблица действительно требует обслуживания. Этот шаблон «сначала проверка, затем действие» предотвращает ненужный расход вычислительных ресурсов на исправные таблицы, обеспечивая при этом автоматическое обслуживание таблиц, состояние которых ухудшилось.
Почему требуется обслуживание
Таблицы Lakehouse могут накапливать слишком много небольших файлов Parquet с течением времени, что повредит производительность запросов в конечной точке аналитики SQL.
Вместо запуска OPTIMIZE по фиксированному расписанию, независимо от состояния таблицы, этот конвейер принимает решение на основе данных: сначала проверяет состояние таблицы и запускает оптимизацию только при обнаружении аномалии.
Необходимые условия
Прежде чем начать, убедитесь, что у вас есть:
- Рабочая область Microsoft Fabric с разрешениями участника или более высокого уровня.
- Lakehouse в этой рабочей области, содержащий хотя бы одну таблицу Delta, которую вы хотите отслеживать. В этом руководстве используется Lakehouse с именем
SalesDataLakehouse. - Знакомство с конвейерами данных Fabric.
- Знакомство с записными книжками Fabric.
Структура решения
Завершенный конвейер имеет эту структуру:
-
Действие скрипта: выполняет
sp_get_table_health_metricsдля целевой таблицы и возвращает метрики состояния таблицы в виде структурированного вывода. -
Операция If Condition: считывает
PotentialAnomalyTypeнепосредственно из вывода скрипта и проверяет, больше ли оно нуля. Дополнительные сведения оPotentialAnomalyTypeкодах типов аномалий см. в разделе "Потенциальные коды типов аномалий". -
Действие записной книжки (внутри ветви True): запускает
OPTIMIZEдля таблицы из записной книжки Spark.
К концу этого руководства у вас будет блокнот, который получает параметры из конвейера и оптимизирует таблицу при запуске.
Шаг 1. Создание записной книжки оптимизации
Блокнот получает из конвейера целевой Lakehouse, схему и имя таблицы в качестве параметров, а затем выполняет OPTIMIZE с помощью Spark SQL.
- В рабочей области Fabric выберите + Создать элемент>Записная книжка.
- Назовите блокнот Optimize-Table.
- В разделе "Расположение" выберите Lakehouse, где хранятся проверяемые таблицы. В этом упражнении используется Lakehouse с именем
SalesDataLakehouse. - Нажмите кнопку "Создать".
Добавление ячейки параметра
Первая ячейка определяет переменные, которые конвейер переопределяет во время выполнения.
В первой ячейке введите следующие параметры. Значения не важны, и конвейер переопределяет их во время выполнения.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Important
Как параметризация работает в записных книжках Fabric: во время выполнения Fabric внедряет новую ячейку сразу после того, как ячейка параметра переназначает эти переменные со значениями, передаваемыми конвейером. Значения, заданные здесь, лишь инициализируют переменные и улучшают читаемость.
Выберите меню ячеек (...) >Переключите ячейку параметра , чтобы пометить эту ячейку как ячейку параметра.
Добавление ячейки OPTIMIZE
Эта OPTIMIZE команда — это команда Spark SQL, а не команда T-SQL. Его необходимо запустить в средах Spark, таких как записные книжки, определения заданий Spark или интерфейс обслуживания Lakehouse. Конечная точка аналитики SQL и редактор SQL-запросов хранилища не поддерживают эту команду напрямую.
Во второй ячейке введите:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Добавьте ячейки Markdown, чтобы правильно документировать записную книжку для других пользователей. Завершенная записная книжка должна выглядеть примерно так:
Note
В этом примере рассматривается Lakehouse с включенными схемами. Измените трехкомпонентное имя full_name соответствующим образом, если вы не используете схемы Lakehouse.
Шаг 2. Создание конвейера
В рабочей области Fabric выберите +Создать> элементов.
Назовите конвейер Check-and-Optimize-Table.
Выберите фон холста конвейера и откройте вкладку "Параметры ". Добавьте три параметра:
Name Type Значение по умолчанию lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString FactSales
Шаг 3. Добавление действия скрипта
Действие скрипта выполняется sys.sp_get_table_health_metrics в конечной точке аналитики SQL и записывает результат.
Important
Используйте действие скрипта , а не действие хранимой процедуры . Только действие «Скрипт» представляет результирующий набор в виде структурированного вывода JSON, который могут разбирать последующие действия.
- На вкладке "Действия" выберите "Скрипт" , чтобы добавить его на холст.
- Назовите его Check Table Health.
- На вкладке "Параметры" :
Подключение: Выберите конечную точку SQL-аналитики для вашего Lakehouse. Если его нет в списке, выберите Просмотреть все внизу раскрывающегося списка, а затем найдите конечную точку SQL-аналитики Lakehouse.
Тип скрипта: выбор запроса.
Скрипт: выберите "Добавить динамическое содержимое " и введите следующее выражение:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Это выражение создает команду SQL, которая выполняет хранимую процедуру для целевой таблицы, например: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'
Проверка выходных данных скрипта
Запустите конвейер один раз и проверьте выходные данные действия скрипта . Вы видите объект JSON, аналогичный следующему:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Important
Фактический результат может отличаться в зависимости от состояния таблицы. Важно то, что он возвращает столбцы, доступные через sys.sp_get_table_health_metrics.
Шаг 4: Добавьте действие "If Condition"
Действие «Условие If» считывает PotentialAnomalyType непосредственно из выходных данных действия Скрипт и принимает решение на основе полученного результата. Выполните следующие действия.
На вкладке "Действия" выберите "Если условие ", чтобы добавить действие на холст.
Назовите это Проверка аномалии.
Нарисуйте стрелку «Успех» (зеленая) от Проверить состояние таблицы к Проверить аномалию.
На вкладке Действия действия If Condition задайте для параметра Выражение значение:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Это выражение считывает первую строку, возвращаемую sys.sp_get_table_health_metrics, приводит PotentialAnomalyType к целому числу и принимает значение true, когда значение больше нуля, что указывает на обнаружение аномалии в целевой таблице.
Шаг 5: Добавьте действие «Notebook» (ветвь True)
Когда выбрано действие «Если условие», нажмите «Изменить» (значок карандаша) рядом с True. Холст переключается на вложенный холст в контексте ветви True.
Перетащите действие Notebook на вложенный холст True.
Присвойт ей имя run OPTIMIZE.
На вкладке Параметры сделайте следующее:
Записная книжка: выберите записную книжку Optimize-Table , созданную на шаге 1.
Разверните базовые параметры, а затем добавьте три строки:
Name Type Value lakehouse_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @pipeline().parameters.table_name
Три значения столбца имен должны совпадать с именами переменных в ячейке параметров записной книжки точно.
Note
Вы можете оставить действия false пустыми. Действие «Условие If» рассматривает пустую ветвь False как отсутствие действий и помечает конвейер как успешно выполненный.
Завершенный конвейер должен выглядеть следующим образом:
Шаг 6. Проверка и запуск
Выберите "Проверить" на панели инструментов конвейера, чтобы проверить наличие ошибок конфигурации.
Выберите Run, чтобы вручную выполнить пайплайн.
Следите за выполнением и подтверждайте:
-
Проверьте состояние таблицы: изучите выходные данные этого действия при его выполнении. Выходные данные хранимой
sys.sp_get_table_health_metricsпроцедуры должны отображаться в формате JSON. -
Проверка аномалии: корректно выполняется, считывая
PotentialAnomalyTypeнепосредственно из вывода скрипта. -
Запустите OPTIMIZE (только если
PotentialAnomalyType > 0): если действие Check Anomaly возвращает значение True, просмотрите входные данные для действия Run OPTIMIZE, чтобы убедиться, что используются правильные параметры (имя Lakehouse, схема и имя таблицы), и проверьте выходные данные, чтобы просмотреть сообщения операцииOPTIMIZE.
-
Проверьте состояние таблицы: изучите выходные данные этого действия при его выполнении. Выходные данные хранимой
Очистите ресурсы
Если вы создали ресурсы только для этого руководства и больше не нужны им, удалите следующие элементы из рабочей области:
- Конвейер Check-and-Optimize-Table.
- Блокнот Optimize-Table.