API для etl-блоков¶
Объекты модели¶
ModelObject
¶
Содержит данные об объекте модели
Атрибут | Тип | Описание |
---|---|---|
model_name |
str |
Название объекта модели |
fields |
list[ModelObjectField] |
Список полей объекта ModelObjectField |
childs |
list[ModelObject] |
Список вложенных (дочерних) объектов ModelObject |
ModelObjectField
¶
Содержит данные о поле объекта модели
Атрибут | Тип | Описание |
---|---|---|
model_name |
str |
Название поля в объекте модели |
simple_type |
str |
Тип поля: string , number , float bool , date |
EtlBlockApplication
¶
Содержит контекст текущего выполняемого приложения по обработке etl-блоков.
Атрибут | Тип | Описание |
---|---|---|
spark |
SparkSession |
Сессия текущего выполняемого приложения Spark |
model_module |
CompuledModule |
Скомпилированный модуль etl-скрипта модели |
vault |
Vault |
Хранилище параметров модели. Может использоваться для хранения чувствительных параметров (пароли, ключи) |
run_mode |
str |
Указывает на текущий режим выполнения etl-блока |
CompiledModule
¶
С помощью данного модуля можно получить доступ к функциям, определенным в etl-скрипте модели. Это бывает полезным, когда в скрипте текущей модели необходимо переопределить поведение etl-блока, добавленного в модель.
Методы объекта CompiledModule
:
Метод | Описание |
---|---|
__contains__ |
Позволяет проверить наличие какой-либо функции или атрибута в модуле etl-скрипта: if 'foo' in module_module: ... |
__getattr__ |
Позволяет обратиться к какой-либо функции или атрибуту etl-скрипта через точку: model_module.foo() |
__getitem__ |
Позволяет обратиться к какой-либо функции или атрибуту etl-скрипта через индексацию: model_module['foo']() |
Методы __getattr__
и __getitem__
при отсутствии функции в модуле etl-скрипта выбрасывают исключение, поэтому перед вызовом рекомендуется
проверять их наличие:
def block_data(app):
""" """
if 'some_function' in app.model_module:
app.model_module.some_function()
Пример использования¶
Пусть у нас есть etl-блок с такой функцией получения данных.
# Код etl-блока block_code.py
def block_data(df, app):
""" """
value = 'значение по умолчанию'
if 'override_value' in app.model_module:
value = app.model_module.override_value()
print(value)
return df
При пустом etl-скрипте модели строка print(value)
напечает "значение по умолчанию". А если открыть редактор etl-скрипта модели
и указать там функцию override_value
как указано ниже, то print(value)
в коде блока напечатает "переопределенное значение".
# Код etl-скрипта модели
def override_value():
"""
Эта функция переопределяет поведение etl-блока
"""
return 'переопределенное значение'
Vault
¶
Объект класса Vault
предоставляет интерфейс доступа к хранилищу параметров модели.
Vault
используется для хранения чувствительных параметров модели (пароли, API-ключи и т.п.).
Данные параметры заполняются пользователем при создании модели и хранятся вне исходного кода.
Метод | Параметры | Описание |
---|---|---|
get |
name: str |
Возвращает значение параметра с названием name . Если такого параметра не существует, то возвращается None |
Пример использования хранилища:
import requests
def block_code(dfs, app):
"""
В текущем блоке используется API ключ для доступа к внешнему сервису.
"""
api_key = app.vault.get('EXTERNAL_API_KEY')
if api_key is None:
raise Exception(
'Не указан API ключ для доступа к внешнему сервису. '
'Заполните параметр модели EXTERNAL_API_KEY'
)
r = requests.get('https://srv.example.com', headers={'api_key': api_key})
...
При создании модели с таким ETL-блоком пользователь должен будет зайти в etl-редактор скрипта модели
и указать значение параметра EXTERNAL_API_KEY
.
run_mode
¶
В Analytic Workspace есть три режима выполнения кода etl-блока
Значение | Описание | Когда запускается | Объем данных в dfs |
---|---|---|---|
full |
Синхронизация модели | Пользователь нажал кнопку "Загрузить данные в хранилище" в редакторе модели или сработал триггер на загрузку данных модели по расписанию. | Все данные |
preview |
Предпросмотр данных модели | Пользователь открыл модель на просмотр/редактирование, и запустился процесс получения данных для показа в нижней панели редактора модели | Не более 10.000 строк из каждого источника |
etl_dev_run |
Тестовый запуск etl-скрипта модели | Пользователь нажал кнопку "Запуск на тестовых данных" в etl-редакторе | Не более 1000 строк из каждого источника |
Зная значения текущего режима запуска приложения, вы можете оптимально управлять данными из источников. Например, если в etl-блоке вы обращаетесь за данными к
внешнему web-сервису, то вычитывать все строки оттуда имеет смысл только для режима full
. В двух других режимах достаточно запросить только
первую страницу из, скажем, 20-100 строк.
ETLBlockActionResult
¶
Содержит информацию о результатах выполнения действия etl-блока.
Атрибут | Тип | Описание |
---|---|---|
params_patch |
dict[str, Any] |
Возвращает набор параметров, которые надо заменить на форме редактирования в результате выполнения действия |