Для создания мультисферы используется метод create_sphere:
def create_sphere(self, cube_name: str, source_name: str, file_type: str, update_params: dict, sql_params: dict = None, user_interval: str = "с текущего дня", filepath: str = str(), separator: str = str(), increment_dim: str = str(), interval_dim: str = str(), interval_borders: list = None, encoding: str = str(), delayed: bool = False) -> dict: |
В методе используются следующие аргументы:
Аргумент | Описание |
---|---|
cube_name: (str) | Название создаваемого куба. Должно содержать не менее 5 символов. |
source_name: (str) | Название источника данных. Не должно содержать пробелов, должно содержать не менее 5 символов. |
file_type: (str) | Тип источника данных. См. значения в файле server-codes.json в поле data_source_type. |
update_params: (dict)
| Параметры обновления мультисферы. |
sql_params: (dict) | Параметры для источника данных SQL. |
user_interval: (str) | Интервал обновлений. Может принимать значения: "с текущего дня", "с предыдущего дня", "с текущей недели", "с предыдущей недели", "с текущего месяца", "с предыдущего месяца", "с текущего квартала", "с предыдущего квартала", "с текущего года", "с предыдущего года", "с указанной даты", "с и по указанную дату". Используется только для интервального обновления. |
filepath: (str) | Путь к файлу или название файла, если он лежит в той же директории, что и Python-скрипт. Название файла должно включать указание его формата, например, file.xlsx или file.csv |
separator: (str) | Разделитель для CSV-источника. По умолчанию разделитель не выставлен. |
increment_dim: (str) | Название размерности для инкрементального обновления. Размерность должна иметь один из следующих типов: uint8, uint16, uint32, uint64, double, date, time, datetime. Используется только для инкрементального обновления. |
interval_dim: (str) | Название размерности для интервального обновления. Размерность должна иметь один из следующих типов: date, datetime. Используется только для инкрементального обновления. |
interval_borders: (list) | Временные границы для интервалов обновлений "с указанной даты" и "с и по указанную дату". Для обновления "с указанной даты" достаточно передать в список только одно значение времени, а для обновления "с и по указанную дату" — два значения времени, при этом второе значение должно быть больше первого. Формат значений времени: "DD.MM.YYYY". Любые другие значения будут игнорироваться. Используется только для интервального обновления. |
encoding: (str) | Кодировка, например UTF-8. Необходимо задать для создания мультисферы из CSV-файла. |
delayed: (bool) | Откладывает создание мультисферы до первого обновления, аналогично чекбоксу «Создать мультисферу при первом обновлении» в пользовательском интерфейсе. Опция недоступна для интервального обновления. |
Словарь update_params имеет структуру:
{ "type": <value>, "schedule": <value> } |
Ключ | Описание |
type | Тип обновления мультисферы. Может принимать значения: "ручное", "по расписанию", "интервальное", "инкрементальное". Инкрементальное, интервальное обновление и обновление по расписанию доступны только для мультисфер, построенных на основе SQL-источников. |
schedule | Расписание обновления мультисферы, позволяющее задать периодичность, время и день недели/число с учетом часового пояса. Если расписание не нужно, то ключ в код не добавляется. |
Значение ключа schedule имеет структуру:
{ "type": <value>, "time": <value>, "time_zone": <value>, "week_day": <value>, "day": <value> } |
Ключ | Описание |
type | Период обновления мультисферы. Может принимать значения: "Ежедневно", "Еженедельно", "Ежемесячно" |
time | Время в формате "18:30". Используется для любого периода обновления. |
time_zone | Часовой пояс в формате "UTC+3:00". Должен соответствовать файлу server-codes.json. Используется для любого периода обновления. |
week_day | День недели. Может принимать значения: "понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье". Регистр у значений менять нельзя. Используется только для периода обновления "Еженедельно". |
day | Число месяца. Значениями могут быть целые числа от 1 до 31. Используется только для периода обновления "Ежемесячно". |
Пример использования update_params:
{ "type": "по расписанию", "schedule": { "type": "Ежедневно", "time": "18:30", "time_zone": "UTC+3:00" } } |
В словарь sql_params передаются поля:
Поле | Описание |
server | Хост, который может быть задан в виде IP-адреса сервера (например, "10.18.0.132") или в виде имени сервера (например, "polymatica.database1.ru"). Опционально можно задать порт подключения через двоеточие после хоста (например, "10.18.0.132:5433" или "polymatica.database1.ru:5433"). Если порт явно не указан, подразумевается порт по умолчанию — 5432. |
login | Логин пользователя. |
passwd | Пароль пользователя. |
database | Имя базы данных. |
sql_query | Запрос, который необходимо выполнить на сервере. |
Пример использования sql_params:
{ "server": "10.8.0.115:5433", "login": "Логин", "passwd": "Пароль", "database": "Имя БД", "sql_query": "SELECT * FROM название таблицы" } |
В результате использования метода возвращается ответ от сервера save_ext_info_several_sources_response, содержащий в том числе идентификатор мультисферы cube_id.
Пример ответа:
{'state': 1, 'queries': [{'uuid': 'b7352551-70002de6-154252f9-01c3238c', 'command': {'plm_type_code': 208, 'state': 29, 'cube_id': '9e4d0c77'}}]} |
Для создания мультисферы из базы данных нужно выполнить код, заполнив значения аргументов cube_name, source_name, file_type, update_params и sql_params, как показано в примере ниже:
sql_params = { "server": "10.8.0.115:5433", "login": "Логин", "passwd": "Пароль", "database": "Имя БД", "sql_query": "SELECT * FROM название таблицы" } update_params ={ "type": "по расписанию", "schedule": { "type": "Ежедневно", "time": "18:30", "time_zone": "UTC+3:00" } sc.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="Значение типа для БД", update_params=update_params, sql_params=sql_params) |
Если расписание обновления задавать не нужно, то в update_params следует заполнить только значение для первого ключа "type", например:
update_params = {"type": "ручное"} |
или
update_params = {"type": "инкрементальное"} |
Если требуется, нужно изменить установленные по умолчанию значения других аргументов, например:
increment_dim = "Пример имени размерности", delayed = False |
или
interval_dim = "Пример имени размерности", user_interval = "с и по указанную дату", interval_borders = ["17.12.2024", "18.12.2024"] |
Для создания мультисферы из Excel нужно выполнить код, заполнив значения аргументов cube_name, source_name, file_type, update_params и filepath, как показано в примере ниже:
update_params = {"type": "ручное"} sc.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="excel", update_params=update_params, filepath = "Пример файла.xlsx") |
Для создания мультисферы из файла CSV нужно выполнить код, заполнив значения аргументов cube_name, source_name, file_type, update_params, filepath, separator и encoding, как показано в примере ниже:
update_params = {"type": "ручное"} sc.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="csv", update_params=update_params, filepath = "Пример файла.csv", separator = ";", encoding = "UTF-8") |