Программный интерфейс
Приложение Application
Объект с текущим контекстом выполнения скрипта.
Атрибуты:
storage
: объект хранилища для чтения и записи данных (Storage
);model
: описание модели, для которой выполняется приложение (Model
);vault
: хранилище параметров модели (Vault
);run_mode
: указывает на то, в каком режиме происходит запуск приложения и принимает следующие значения:etl_dev_run
- тестовый запуск из редактора ETL;preview
- получение данных предпросмотра в редакторе моделей;full
- полный режим (синхронизация данных моделей с внутренним хранилищем).
is_preview
: (устаревший параметр, см.run_mode
) принимает значениеTrue
, когда скрипт выполняется в preview-режиме (например, когда пользователь работает в редакторе модели).
Обратите внимание, что в случаях run_mode == 'etl_dev_run'
, run_mode == 'preview'
или (устаревший способ)
is_preview == True
следует избегать трудоемких операций, т.к. он выполняется в синхронном с UI пользователя режиме.
Хранилище Storage
Storage обеспечивает интерфейс для сохранения и последующего чтения данных из внутреннего хранилища.
Атрибуты:
model
: описание модели, для которой инициализировано хранилище (Model
). Доступ к хранимым объектам других моделей запрещен;
Методы:
get_meta(name: str)
: возвращает метаданныеStorageObjectMeta
хранимого объекта с названиемname
. Если объекта с указанным названием в хранилище нет, то возвращаетсяNone
;save(self, name: str, data: Union[pyspark.sql.DataFrame, dict, list])
: сохраняет данные в хранилище под именемname
. Данные для сохранения должны быть представлены либо в виде JSON-объекта (типы данныхPython
:dict
,list
), либо в виде Spark-датафрейма. При указании в параметреdata
значений других типов выбрасывается исключение;read(self, name: str) -> Union[pyspark.sql.DataFrame, dict, list]
: читает данные из хранилища для имениname
. Возвращается объект того же типа (JSON, Spark-датафрейм), который ранее был указан при сохранении объекта. При отсутствии в хранилище объекта с именемname
выбрасывается исключение;delete(self, name)
: удаляет хранимый объект с именемname
. Если объекта с таким именем нет в хранилище, то функция успешно завершается без выбрасывания исключения.
Метаданные объекта из хранилища StorageObjectMeta
Атрибуты:
name
: название объекта с данными (str
);type
: тип сохраненных данных (str
).json
- для JSON-объекта,parquet
- для Spark-датафрейма.last_modified
: дата и время последнего изменения объекта в хранилизе (в UTC без указания таймзоны).
Параметры модели Vault
Обеспечивает доступ к параметрам модели, указываемым в редакторе ETL. Обычно используется для хранения чувствительных параметров: API ключей к внешним сервисам, строк подключения к БД и т.п.
Методы:
get(name) -> str
: возвращает значение параметра с названиемname
илиNone
, если пользователь не задал параметр с таким именем. Значения всегда возвращаются в виде строки, и разработчику скрипта необходимо самостоятельно позаботиться о приведении типа к нужному для корректного использования.
Пример использования Vault
import pymongo
def after_load_virtual(df, app, spark, *args, **kwargs):
""" """
mongo_url = app.vault.get('mongo_url')
if not mongo_url:
raise Exception('Не указана строка подключения к БД')
mongo_client = pymongo.MongoClient(mongo_url)
db = mongo_client['my_database']
rows = []
for doc in db.my_documents.find():
...
return df
Spark-сессия SparkSession
Представляет тобой контекст выполняемого Spark-приложения. Используется для доступа к возможностям SQL-движка Spark.
df = spark.createDataFrame([
{'code': '01', 'name': 'Название 1'},
{'code': '02', 'name': 'Название 2'}
])
df.createOrReplaceTempView('my_table')
df1 = spark.sql("SELECT name FROM my_table WHERE code = '01'")
df1.show()
# +----------+
# | name |
# +----------+
# |Название 1|
# +----------+
Более подробная информация в официальной документации.
Spark-датафрейм DataFrame
Представляет собой распределенный набор данных, сгруппированных в именованные столбцы. Интерфейс Spark для работы с датафреймами позволяет рассматривать их как обычные реляционные таблицы.
Более подробная информация в официальной документации.
Модель Model
id
- идентификатор модели (int
);objects
- список объектов модели (List[ModelObject]
);fields
- список вычисляемых полей модели (List[ModelCalcField]
);schedule
- cron-выражение, задающее расписание синхронизации модели;
Объект модели ModelObject
data_source
: описание источника данных (DataSource
);sql_test
: если
Источник данных DataSource
type
: тип источника (postgres, oracle, xlsx, ...)db
/file
: имя базы данных или путь к файлу (в зависимости от типа источника);