Creatio

Ноутбуки, используемые в примере:

Тип статьи

Инструкция

Компетенции

JupyterLab, Python, Petl, Pandas, Creatio API

Необходимые права

Доступ к JupyterLab

Версии компонентов

Jupyter core - 4.7.1, pandas - 1.2.3, Sqlalchemy - 1.3.23,

Статус

БЕТА

Сложность

ЛЕГКО

Полезные ссылки

Requests, Pandas, Creatio API OData 4, SQLAlchemy

Дополнительные сведения

ОС Ubuntu 18.04

 

В статье рассматривается пример обработки данных, полученных с помощью Creatio API OData 4.

Для выгрузки данных в PostgreSQL используется библиотека Pandas.

Цель - получение данных с помощью Creatio API OData 4 для загрузки их в платформу и анализа на дашбордах.

 

Стратегия.


  • Последовательно получить записи из сущностей Creatio в требуемом временном промежутке и загрузить эти данные в соответствующие таблицы промежуточной базы PostgreSQL. Финальным этапом загрузить данные из этой базы в ViQube через SQL-загрузчик.

В этой статье не рассматривается:

  • Данные загружаются разово. Для регулярной автоматический выгрузки необходимо настроить планировщик Chronicle.

  • Для дальнейшей загрузки в платформу можно воспользоваться стандартными средствами в платформе: “создание загрузчика” и “планы загрузки”. Всё описано в разделе документации (ссылка для версии 2.20):
    Загрузка данных и формирование структуры в аналитической базе данных ViQube

  • Получение наименований и полей сущностей Creatio.

  • Подробности работы подключенных Python библиотек.


Нам понадобятся такие библиотеки, как: Requests, Pandas, SQLAlchemy.

Если они у вас не установлены, то вы можете воспользоваться статьей по установке библиотек:

Установка Python библиотек

Для работы скрипта необходима созданная база PostgreSQL и пользователь в ней с необходимыми правами для создания сущностей.


#Подключаем библиотеки

import requests import pandas as pd import sys import sqlalchemy from datetime import datetime

#Фиксируем момент запуска скрипта

starttime = datetime.now()

#Авторизационные данные

postgreHost = '*****' postgreDB = '*****' postgreSchema = 'creatio' postgreUser = '*****' postgrePort = '5432' postgrePass = '*****' baseCreatioUser = "*****" baseCreatioPass = "*****" baseCreatioURL = '*****'

#Пути

#GET фильтры для Creatio

#Признак первого запуска

#Крайняя дата начала выгрузки

#Подключение к базе Postgre

#Проверка наличия схемы, если отсутствует, создаём

#Проверка наличия служебной таблицы TransferControl

#Если таблицы нет, создаем

#Иначе берём последнюю дату удачной выгрузки

#Подготовка строки фильтра по датам

#Удаляем VIEW из базы, если он есть

#Заголовок для запросов

#Получаем токен от Creatio

#Далее следует основная функция, получающая необходимые данные

#Функция записи статуса в служебную таблицу TransferControl, которая позволяет при повторных запусках выбрать только записи, модифицированные с момента последнего удачного запуска. Сохраняем время завершения скрипта, статус и время исполнения скрипта

#Функция UPSERT, аналог MERGE. Добавляет новые или обновляет старые, если таковые уже имеются. Признак для этого - первичный ключ Id

#Далее следует основная рутина

Получение интересующих коллекций по фильтрам

#Запись успешного состояния

#Создаём VIEW на основе полученных данных для загрузки таблицы фактов через SQL-загрузчик