Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Комментарий: Published by Scroll Versions from space PAServicesForDev9 and version 5.9.11

Easy Heading Macro
navigationTitleОглавлениеНа этой странице

Описание метода

Для создания мультисферы используется метод create_sphere:

Блок кода
languagepy
def create_sphere(self, cube_name: str, source_name: str, file_type: str, update_params: dict = None,
                      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,
                      modified_records_params: dict = None) -> 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.

Допустимы буквы, цифры, специальные символы (кроме: % ^ & = ; ± § ` ~ ] [ } { < >).

При попытке создать мультисферу с названием, уже существующим в системе для другой мультисферы, к названию создаваемой мультисферы прибавляется порядковый номер в круглых скобках, начиная с единицы. Например, «Мультисфера(1)», «Мультисфера(2)» и т. д.

Если в начале или в конце имени мультисферы ввести пробелы, они будут удалены. Например, «  Мультисфера  » будет отображаться как «Мультисфера».

source_name: (str)

Название источника данных. Должно содержать от 5 до 100 символов. Допустимы русские и английские буквы, цифры, пробел, _ и - .

file_type: (str)

Тип источника данных. См. значения в файле server-codes.json в поле data_source_type. Примеры основных источников данных: «excel», «csv», «mssql», «mysql», «psql», «jdbc», «odbc».

update_params: (dict)

 

Параметры обновления мультисферы. Не используется для мультисфер, созданных из файловых источников («excel», «csv»).

sql_params: (dict)

Параметры для источника данных SQL.

user_interval: (str)

Интервал обновлений. Может принимать значения: «с текущего дня», «с предыдущего дня», «с текущей недели», «с предыдущей недели», «с текущего месяца», «с предыдущего месяца», «с текущего квартала», «с предыдущего квартала», «с текущего года», «с предыдущего года», «с указанной даты», «с и по указанную дату»

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«DD.MM.YYYY"YYYY». Любые другие значения будут игнорироваться.

Используется только для интервального обновления.

encoding: (str)

Кодировка, например UTF-8. Необходимо задать для создания мультисферы из CSV-файла.

delayed: (bool)

Откладывает создание мультисферы до первого обновления, аналогично чекбоксу «Создать мультисферу при первом обновлении» в пользовательском интерфейсе. Опция недоступна для интервального обновления.

modified_records_params: (dict)

Параметры обновления для типа «обновление измененных записей».

Словарь update_params имеет структуру:

Блок кода
languagepy
{
                "type": <value>,
                "schedule": <value><dict>
            }

Ключ

Описание

type

Тип обновления мультисферы. Может принимать значения: "ручное", "по расписанию", "интервальное", "инкрементальное". Инкрементальное, интервальное обновление и обновление по расписанию доступны только для мультисфер, построенных на основе SQL-источников«ручное», «по расписанию», «интервальное», «инкрементальное», «обновление измененных записей».

schedule

Расписание обновления мультисферы, позволяющее задать периодичность, время и день недели/число с учетом часового пояса. Если расписание не нужно, то ключ в код не добавляется. Для типа обновление «ручное» задавать расписание не имеет смысла. Для типа «по расписанию» ключ является обязательным.

Значение ключа schedule имеет структуру:

...

Ключ

Описание

type

Период обновления мультисферы. Может принимать значения: "Ежедневно", "Еженедельно", "Ежемесячно"«Ежедневно», «Еженедельно», «Ежемесячно».

time

Время в формате "18«18:30"30».

Используется для любого периода обновления.

time_zone

Часовой пояс в формате "UTC«UTC+3:00"00». Должен соответствовать файлу server-codes.json.

Используется для любого периода обновления.

week_day

День недели. Может принимать значения: "понедельник", "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье"«понедельник», «вторник», «среда», «четверг», «пятница», «суббота», «воскресенье». Регистр у значений менять нельзя.

Используется только для периода обновления "Еженедельно"«Еженедельно».

day

Число месяца. Значениями могут быть целые числа от 1 до 31.

Используется только для периода обновления "Ежемесячно"«Ежемесячно».

Пример использования update_params:

...

Поле

Описание

server

Хост, который может быть задан в виде IP-адреса сервера (например, "10«10.18.0.132"132») или в виде имени сервера (например, "«polymatica.database1.ru"»).

Опционально можно задать порт подключения через двоеточие после хоста (например, "10«10.18.0.132:5433" 5433» или "«polymatica.database1.ru:5433"5433»).

Если порт явно не указан, подразумевается порт по умолчанию — 5432.

login

Логин пользователя.

passwd

Пароль пользователя.

database

Имя базы данных.

sql_query

Запрос, который необходимо выполнить на сервере.

Пример использования sql_params:

Блок кода
languagepy
{
                    "server": "10.8.0.115:5433",
                    "login": "Логин",
                    "passwd": "Пароль",
                    "database": "Имя БД",
                    "sql_query": "SELECT * FROM название таблицы"
                }

В словарь modified_records_params передаются поля:

ПолеОписание
modified_records_keyПоле, по которому осуществляется сопоставление данных (имя размерности). Должно быть уникальным на уровне источника. Тип данных — любой.
modified_records_dateДата изменения записи (имя размерности). При использовании этого параметра обновления будут обновлены существующие и добавлены новые записи, для которых дата изменения записи в источнике больше, чем в мультисфере. Размерность должна иметь один из следующих типов: date, datetime.
versionВерсия алгоритма. 0 — старый стандартный алгоритм обновления, 1 — новый оптимизированный и ускоренный алгоритм обновления. Необязательный параметр. Если параметр не указан, то используется новый алгоритм.

Пример использования modified_records_params:

Блок кода
languagepy
{
                    "modified_records_key": "id",
                    "modified_records_date": "date",
                    "version": 1
                }


В результате использования метода возвращается ответ от сервера save_ext_info_several_sources_response, содержащий в том числе идентификатор мультисферы cube_id.

Пример ответа:

Блок кода
languagepy
{'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, как показано в примере ниже:

Блок кода
languagepy
sql_params = {
                    "server": "10.8.0.115:5433",
                    "login": "Логин",
                    "passwd": "Пароль",
                    "database": "Имя БД",
                    "sql_query": "SELECT * FROM название таблицы"
                }
update_params ={
                    "type": "по расписанию",
                    "schedule": {
                        "type": "Ежедневно",
   {
                     "servertime": "10.8.0.115:543318:30",
                        "logintime_zone": "ЛогинUTC+3:00",
                    "passwd": "Пароль",
                    "database": "Имя БД",
                    "sql_query": "SELECT * FROM название таблицы"
                }

В результате использования метода возвращается ответ от сервера save_ext_info_several_sources_response, содержащий в том числе идентификатор мультисферы cube_id.

Пример ответа:

Блок кода
languagepy
{'state': 1,
 'queries': [{'uuid': 'b7352551-70002de6-154252f9-01c3238c',
   'command': {'plm_type_code': 208, 'state': 29, 'cube_id': '9e4d0c77'}}]}

Мультисфера на основе базы данных

}
session.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="Значение типа для БД", update_params=update_params, sql_params=sql_params)

Если расписание обновления задавать не нужно, то в update_params следует заполнить только значение для первого ключа type, например:

Блок кода
languagepy
update_params = {"type": "ручное"}

или

Блок кода
languagepy
update_params = {"type": "инкрементальное"}

Если требуется, нужно изменить установленные по умолчанию значения других аргументов, например:

Блок кода
languagepy
increment_dim = "Пример имени размерности",
delayed = True

или

Блок кода
languagepy
interval_dim = "Пример имени размерности",
user_interval = "с и по указанную дату",
interval_borders = ["17.12.2024", "18.12.2024"]

Если тип обновления — «обновление измененных записей», кроме Для создания мультисферы из базы данных нужно выполнить код, заполнив значения аргументов cube_name, source_name, file_type, update_params и sql_params, как показано в примере ниже нужно также заполнить значения аргумента modified_records_params:

Блок кода
languagepy
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"
                     "time_zone": "UTC+3:00"}
modified_records_params = {
                    }
sc.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="Значение типа для БД", update_params=update_params, sql_params=sql_params)

Если расписание обновления задавать не нужно, то в update_params следует заполнить только значение для первого ключа "type", например:

Блок кода
languagepy
update_params = {"type": "ручное"}

или

Блок кода
languagepy
update_params = {"type": "инкрементальное"}

Если требуется, нужно изменить установленные по умолчанию значения других аргументов, например:

Блок кода
languagepy
increment_dim = "Пример имени размерности",
delayed = False

или

Блок кода
languagepy
interval_dim = "Пример имени размерности",
user_interval = "с и по указанную дату",
interval_borders = ["17.12.2024", "18.12.2024"]"modified_records_key": "ID",
                    "modified_records_date": "dates",
                    "version": 0
                }
session.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="Значение типа для БД", update_params=update_params, sql_params=sql_params, modified_records_params=modified_records_params)



Мультисфера на основе файла Excel

Для создания мультисферы из Excel нужно выполнить код, заполнив значения аргументов cube_name, source_name, file_type, update_params и  и filepath, как показано в примере ниже:ниже:

Блок кода
languagepy
session
Блок кода
languagepy
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, как показано в примере ниже:

Блок кода
languagepy
update_params = {"type": "ручное"}
scsession.create_sphere(cube_name="Имя мультисферы", source_name="Пример имени источника", file_type="csv", update_params=update_params, filepath = "Пример файла.csv", separator = ";", encoding = "UTF-8")