Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Конвейеры Lakeflow поддерживают интерфейсы SQL и Python для определения пакетных и потоковых конвейеров. Оба интерфейса создают один и тот же базовый граф потока данных, поэтому они обеспечивают эквивалентную функциональность для большинства обработки данных. Они отличаются гибкостью, специальными возможностями и охватом функций.
Используйте это руководство, чтобы решить, какой интерфейс следует использовать:
- Если вы можете выразить логику в SQL, используйте SQL.
- Если вам нужен программный контроль или функция только для Python, используйте Python.
- Если вы более комфортно с Python, используйте Python. Он охватывает весь набор возможностей конвейера, так что одного знакомства с ним уже достаточно. Обратное неверно: SQL охватывает не все возможности, поэтому не стоит выбирать его только потому, что вы с ним знакомы.
Вы также можете объединить оба интерфейса в одном конвейере. См. Смешивание SQL и Python.
Когда следует использовать SQL?
SQL подходит, если вы хотите:
- Понятные декларативные определения: чёткая логика, которую специалисты по данным и аналитики могут сопровождать.
- Стандартные типы таблиц: конвейеры, созданные главным образом из потоковых таблиц и материализованных представлений.
- Линейные цепочки преобразований: простая загрузка и преобразование данных, например поток из слоя Bronze в Silver, затем в Gold, без использования процедурной логики.
- Автономные таблицы: автономные потоковые таблицы или материализованные представления, которые вы создаете в SQL.
Общие сведения о разработке конвейеров в SQL см. в статье "Разработка кода конвейеров Lakeflow с помощью SQL".
Когда следует использовать Python
Python хорошо подходит при необходимости:
- Программный элемент управления: циклы, условные выражения и метапрограммирование для динамического создания определений конвейера.
-
Внешние библиотеки: Python пакеты, такие как
fakerилиboto3. См. Управление зависимостями Python для конвейеров. - Определяемые пользователем функции (UDFs): вы определяете определяемые пользователем функции в Python и может вызывать их как из Python, так и из исходных файлов SQL. См. скалярные пользовательские функции Python (UDF).
-
функции только Python:
-
create_auto_cdc_from_snapshot_flow()для применения захвата измененных данных из снимка базы данных. -
create_sink()иforeach_batch_sink()для записи во внешние назначения потоковой передачи событий или назначения Delta.
-
Общие сведения о разработке конвейеров в Python см. в статье "Разработка кода конвейера с помощью Python".
Смешивание SQL и Python
Один конвейер может объединять определения SQL и Python, но каждый язык должен находиться в отдельном исходном файле. Например, вы можете определить бронзовые и серебряные таблицы в Python и золотые таблицы в SQL.
Доступность функций
В следующей таблице сравнивается, как каждый интерфейс поддерживает общие функции конвейера:
| Функция | SQL | Python |
|---|---|---|
| потоковая таблица | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| материализованное представление | CREATE MATERIALIZED VIEW |
materialized_view() |
| Материализованное представление, совместимое с Iceberg (общедоступная предварительная версия) |
CREATE MATERIALIZED VIEW ... USING ICEBERG. См. статью "Создание материализованного представления", совместимого с внешними читателями Iceberg. |
Не поддерживаются |
| Временное представление | CREATE TEMPORARY VIEW |
temporary_view() |
| Закрытая таблица |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| Авто CDC | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Автоматический CDC из снимка | Не поддерживаются | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Sink | Не поддерживаются |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail() и варианты expect_all |
Обзор решения
Если вам нужно...
| Goal | Рекомендуемый интерфейс |
|---|---|
| Простота и удобочитаемость | SQL |
| Быстрая декларативная настройка | SQL |
| Автономная потоковая таблица или материализованное представление | SQL |
| Логика условного или циклического цикла | Python |
| Определяемые пользователем функции или внешние библиотеки Python | Python |
| Автоматический CDC из снимка или приёмников | Python |
| Полный программный контроль и модульность | Python |