Руководство пользователя
Выполнение рабочих процессов через API
Рабочий процесс может быть выполнен посредством вызова API, что позволяет объединять рабочие процессы с более крупными процессами, запускать аналитические конвейеры из внешних приложений и осуществлять дальнейшую интеграцию, которая обеспечивает широкий спектр вариантов использования.
Введение
Epsilon Workflows преобразует аналитические конвейеры, разработанные в холсте, в собственные запросы SQL в облаке, которые выполняются непосредственно в хранилище данных. Этот сгенерированный код SQL имеет различные формы:
-
Код, отображаемый на вкладке SQL панели результатов, содержит все структуры управления и создания промежуточных таблиц для каждого узла рабочего процесса.
-
Хранимая процедура, созданная в workflows_temp, выполняется, когда выполнение рабочего процесса запускается через вызов API. Эта хранимая процедура может иметь входные параметры, которые используются позже в коде, которые создаются из переменных, помеченных как «Параметры».
Способность рабочих процессов генерировать код SQL, который может быть выполнен через вызов API, представляет собой значительный прогресс в интеграции сложных аналитических процессов с внешними системами. Эта возможность не только оптимизирует процесс выполнения рабочих процессов в ответ на внешние триггеры, но и открывает множество возможностей для автоматизации и масштабируемости в проектах анализа данных.
Включение доступа API для рабочего процесса
Чтобы включить доступ API для существующего рабочего процесса, нажмите на три точки в правом верхнем углу и найдите «API». Нажмите «Включить доступ API», и вы увидите диалоговое окно, которое выглядит следующим образом:
Это пример вызова API, который запускает выполнение рабочего процесса:
Пример ПОЛУЧИТЬ:
https://gcp-us-east1.api.Epsilon.com/v3/sql/your_connection/job?query=CALL `workflows-api-demo.workflows_temp.wfproc_f2f8df5df4ddf279`(@number_of_clusters,@buffer_radius,@store_type)&queryParameters={"number_of_clusters":2,"buffer_radius":500,"store_type":"Supermarket"}&access_token=eyJhbGc(...)GUH-Lw
Пример POST-сообщения:
curl --location 'https://gcp-us-east1.api.Epsilon.com/v3/sql/your_connection/job' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGc(...)GUH-Lw' \
--data '{
"query": "CALL `workflows-api-demo.workflows_temp.wfproc_f2f8df5df4ddf279`(@number_of_clusters,@buffer_radius,@store_type)",
"queryParameters": {"number_of_clusters":2,"buffer_radius":500,"store_type":"Supermarket"}
}'
Есть несколько вещей, которые стоит принять во внимание:
-
На самом деле это запрос GET или POST к SQL API Epsilon, который можно использовать для создания заданий, выполняющих запросы асинхронно.
-
Запрос — это
CALL
оператор для хранимой процедуры. Рабочие процессы сгенерируют хранимую процедуру в вашейworkflows_temp
схеме/наборе данных. Сгенерированный SQL тот же, что вы получите с помощью функции «Экспорт» . -
Объект
queryParameters
в полезной нагрузке содержит значения для некоторых переменных, которые передаются в качестве входных данных в хранимую процедуру. Эти переменные отмечены как «Параметр» в меню « Переменные ». -
Предоставленный вызов API авторизуется с помощью токена доступа API , который имеет определенные разрешения, необходимые для выполнения этого запроса через то же соединение, которое использовалось для создания рабочего процесса.
Запуск рабочего процесса через вызов API
Приведенный пример curl
иллюстрирует запрос POST, который запускает выполнение рабочего процесса. Этот вызов примера должен быть легко адаптирован к другим методам на разных языках, например, к библиотеке запросов в Python.
Ответ на этот вызов будет выглядеть следующим образом:
{
"externalId": "job_h8UWzpdzX0s2XAAXQd3rdWCdPUT9",
"accountId": "ac_jfakef5m",
"userId": "auth0|61164b7xxx77c006a259f53",
"connectionId": "5a32a0ea-555a-48dd-aeb1-8768aae8ef1c",
"metadata": {},
"createdAt": "2023-10-04T16:10:35.732Z",
"query": "CALL `workflows-api-demo.workflows_temp.wfproc_f2f8df5df4ddf279`(@number_of_clusters,@buffer_radius,@store_type)",
"jobMetadata": {
"location": "US",
"workflowOutputTableName": "workflows-api-demo.workflows_temp.wfproc_f2f8df5df4ddf279_out_33afd785675f081d"
},
"token": "eyJhbGc(...)GUH-Lw"
}
Проверка статуса выполнения рабочего процесса
Вы можете использовать это externalId, чтобы сделать запрос на проверку статуса выполнения, например:
curl --location 'https://gcp-us-east1.api.Epsilon.com/v3/sql/your_connection/job/job_h8UWzpdzX0s2XAAXQd3rdWCdPUT9' \
--header 'Authorization: Bearer eyJhbGc(...)GUH-Lw'
Ответ на этот вызов API представляет собой JSON, содержащий метаданные о выполнении запроса, включая statusобъект с информацией о статусе выполнения.
Ниже приведен пример неудачного выполнения из-за неверных типов параметров:
"status": {
"errorResult": {
"reason": "invalidQuery",
"location": "query",
"message": "Query error: Cannot coerce expression @number_of_clusters to type INT64 at [1:158]"
},
"state": "DONE"
}
Хотя это и было бы примером успешного исполнения:
"status": {
"state": "DONE"
}
Вывод рабочего процесса, выполненного через API
Чтобы определить, какой узел вашего рабочего процесса будет использоваться в качестве вывода вызова API, вам необходимо использовать компонент Output . Этот компонент гарантирует, что содержимое подключенного к нему узла будет сохранено во временной таблице, местоположение которой возвращается в объекте в ответе вызова API. "workflowOutputTableName"
Местоположение временной таблицы возвращается при создании задания, но содержимое таблицы не будет полным, пока выполнение не будет завершено.
Выполнения API одного и того же рабочего процесса, но с разными, queryParameters
дадут разные выходные таблицы. С другой стороны, выполнения API с тем же queryParameters
дадут тот же результат, поскольку будет повторно использована одна и та же выходная таблица.
Это поведение можно контролировать с помощью настроек кэша в пользовательском интерфейсе Workflows. Отключение этого параметра всегда будет принуждать к повторному выполнению рабочего процесса, даже если queryParameters
выполняются последовательные вызовы API с тем же самым.
Обновление вашего рабочего процесса
Всякий раз, когда вы хотите распространить изменения в своем рабочем процессе на соответствующую хранимую процедуру, которая выполняется с помощью вызова API, вам необходимо обновить ее.
Для этого просто нажмите на чип в верхнем заголовке с надписью «API включен», что откроет модальное окно конечной точки API. Подождите пару секунд, пока Epsilon проверяет изменения в рабочем процессе, и вы увидите это:
Нажмите «Обновить», чтобы синхронизировать рабочий процесс, выполняемый через API, с текущим состоянием рабочего процесса в пользовательском интерфейсе.
Отключение доступа API
Если вам необходимо запретить доступ к API для рабочего процесса, просто нажмите «Отключить доступ к API» в модальном окне конечной точки API и подтвердите: