Перейти к основному содержимому

DB-APi-KOOB

Создание куба

Для создания куба необходимо выполнить HTTP POST запрос по стандартам DB API. Поддерживается создание глобальных и атласных кубов.

В случае создания глобального куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.cubes/

В случае создания атласного куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.cubes/

  • luxmsbi_url - имя хоста,
  • atlas - имя атласа

Данные для вставки кодируются в формате JSON, как указано в таблице:

Имя поляЗначениеТип поляПример JSON
idИдентификатор кубаtext{"id": "luxmsbi.example_koob_name"}
source_identИдентификатор источника данныхtext{"source_ident": "luxmsbi"}
nameНазвание куба(используется для ссылки на куб)text{"name": "example_koob_name"}
titleНазвание куба(используется в веб интерфейсе)text{"title": "example_koob_title"}
sql_querySQL запрос для кубаtext{sql_query: "select * from test_table"}
configКонфигурация кубаjsonb{"config":{"skip_where": 1, "is_template": 1}}

Примеры запросов для создания глобального и локального кубов

Создание глобального куба

curl 'http://${luxmsbi_url}/api/db/koob.cubes/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"name":"example_koob_name","title":"example_koob_title","source_ident":"luxmsbi","sql_query":"select * from \"test_table\"", "config":{"skip_where": 1, "is_template": 1}}'

Создание атласного куба

curl 'http://${luxmsbi_url}/api/db/${atlas}.cubes/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"name":"example_koob_name","title":"example_koob_title","source_ident":"luxmsbi","sql_query":"select * from \"test_table\"", "config":{"skip_where": 1, "is_template": 1}}'

Пример успешного ответа

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
"id": "luxmsbi.example_koob_name",
"source_ident": "luxmsbi",
"name": "example_koob_name",
"title": "example_koob_title",
"sql_query": "select * from \"test_table\"",
"config": {
"skip_where": 1,
"is_template": 1
}
}
к сведению

Если в теле запроса используется ключ id, то значение соответствующие ему должно быть сформировано по опеределенному шаблону - source_ident.cube_name , иначе запись не будет добавлена. Если ключ id не указан в запросе, значение для него будет сгенерировано автоматически на основе полей source_ident и name.

Создание нескольких кубов

Для создания двух и более кубов одним запросом используется JSON нотация списка [], в котором перечислены объекты для вставки.

Пример запроса для создания нескольких кубов

curl 'http://${luxmsbi_url}/api/db/koob.cubes/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '[{"name":"example_koob_name","title":"example_koob_title","source_ident":"luxmsbi","sql_query":"select * from \"test_table\"", "config":{"skip_where": 1, "is_template": 1}},{"name":"example_koob_name_2","title":"example_koob_title_2","source_ident":"luxmsbi","sql_query":"select * from \"test_table\"", "config":{"skip_where": 1, "is_template": 1}}]'

HTTP статусы ответов

Код ответаОписание
200Успешная операция вставки
409Означает , что произошло нарушение ограничения уникальности ключа (например: совпадение id)
500Используется при любых внутренних ошибках сервера

Изменение куба

Для внесения изменения в куб необходимо выполнить HTTP PUT запрос. Поддерживается изменение локальных и атласных кубов.

В случае внесения изменений в глобальный куб используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.cubes/${koob_id}

В случае внесения изменений в атласный куб используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.cubes/${koob_id}

  • luxmsbi_url - имя хоста,
  • koob_id - идентификатор куба, в который вносятся изменения,
  • atlas - название атласа
к сведению

Для изменения одного определенного куба нужно знать его идентификатор. Идентификатор куба указывается в URL запроса в сегменте ${koob_id}, а список изменяемых полей и их значений передаётся в теле запроса в формате JSON

Например , чтобы изменить название глобального или атласного куба нужно выполнить один из следующих HTTP PUT запросов:

Пример запроса для изменения глобального куба:

curl 'http://${luxmsbi_url}/api/db/koob.cubes/${koob_id}' \
-X 'PUT' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"title":"new_koob_name"}'

Пример запроса для изменения атласного куба

curl 'http://${luxmsbi_url}/api/db/${atlas}.cubes/${koob_id}' \
-X 'PUT' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"title":"new_koob_name"}'

Пример успешного ответа для операции изменения данных

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
{
"id": "luxmsbi.example_koob_name",
"source_ident": "luxmsbi",
"name": "example_koob_name",
"title": "new_koob_name",
"sql_query": "select * from \"test_table\"",
"config": {
"skip_where": 1,
"is_template": 1
}
}
]

HTTP статусы ответов

Код ответаОписание
200Успешная операция изменения
404Объект не найден(например, при указании несуществующего id)
500Используется при любых внутренних ошибках сервера

Удаление куба

Для удаления куба необходимо выполнить HTTP DELETE запрос. Поддерживается удаление локального и глобального кубов.

В случае удаления глобального куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.cubes/${koob_id}

В случае удаления атласного куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.cubes/${koob_id}

  • luxmsbi_url - имя хоста,
  • koob_id - идентификатор куба, который требуется удалить,
  • atlas - название атласа
к сведению

Для удаления одного определенного куба нужно знать его идентификатор. Идентификатор куба указывается в URL запроса в сегменте ${koob_id}.

Пример запроса для удаления глобального куба

curl 'http://${luxmsbi_url}/api/db/koob.cubes/${koob_id}' \
-X 'DELETE' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}'

Пример запроса для удаления глобального куба

curl 'http://${luxmsbi_url}/api/db/${atlas}.cubes/${koob_id}' \
-X 'DELETE' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}'

Пример ответа при успешном завершении операции по удалению куба

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
{
"id": "luxmsbi.example_name",
"source_ident": "luxmsbi",
"name": "example_koob_name",
"title": "example_koob_title",
"sql_query": "select * from \"test_table\"",
"config": {
"skip_where": 1,
"is_template": 1
}
}
]

HTTP статусы ответов

Код ответаОписание
200Успешная операция удаления
404Объект не найден(например, при указании несуществующего id)
500Используется при любых внутренних ошибках сервера

Создание размерности для куба

Для создания размерности необходимо выполнить HTTP POST запрос. Поддерживается создание локальных и глобальных размерностей.

В случае создания размерности для глобального куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.dimensions/

В случае создания размерности для глобального куба используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.dimensions/

  • luxmsbi_url - имя хоста,
  • atlas - название атласа

Данные для вставки кодируются в формате JSON, как указано в таблице:

Имя поляЗначениеТип поляПример JSON
idИдентификатор размерностиtext{"id": "luxmsbi.example_koob_name.example_dim_name"}
source_identИдентификатор источника данныхtext{"source_ident": "luxmsbi"}
cube_nameНазвание куба(к которому относится размерность)text{"cube_name": "example_koob_name"}
nameНазвание размерности(используется для ссылки на размерность)text{"name": "example_dim_name"}
typeТип размерности (STRING, NUMBER, PERIOD, SUM, AGGFN)text{"type": "SUM"}
titleНазвание размерности( используется для отображения в веб интерфейсе)text{"title":"example_dim_title"}
sql_queryСтрока , которая будет добавлена в SQL запрос при запросе данных по этой размерностиtext{"sql_query":"example_col_name"}
configКонфигурация размерностиjsonb{"config":{"possible_aggregations": ["mode", "count"]}}

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

Пример создания глобальной размерности

curl 'http://${luxmsbi_url}/api/db/koob.dimensions/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"source_ident":"luxmsbi","cube_name":"example_koob_name","name":"example_dim_name","type":"SUM","title":"example_dim_title","sql_query":"example_col_name","config":{"possible_aggregations": ["mode", "count"]}}'

Пример создания локальной размерности

curl 'http://${luxmsbi_url}/api/db/${atlas}.dimensions/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"source_ident":"luxmsbi","cube_name":"example_koob_name","name":"example_dim_name","type":"SUM","title":"example_dim_title","sql_query":"example_col_name","config":{"possible_aggregations": ["mode", "count"]}}'

Пример ответа при успешном завершении операции создания размерности

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
"id": "luxmsbi.example_koob_name.example_dim_name",
"source_ident": "luxmsbi",
"cube_name": "example_koob_name",
"name": "example_dim_name",
"type": "SUM",
"title": "example_dim_title",
"sql_query": "example_col_name",
"config": {
"possible_aggregations": [
"mode",
"count"
]
}
}
к сведению

Если в теле запроса используется ключ id, то значение соответствующие ему должно быть сформировано по опеределенному шаблону - source_ident.cube_name.name , иначе запись не будет добавлена. Если ключ id не указан в запросе, значение для него будет сгенерировано автоматически.

Добавление нескольких размерностей

Для создания двух и более размерностей одним запросом используется JSON нотация списка [], в котором перечислены объекты для вставки.

Пример запроса для создания нескольких размерностей

curl 'http://${luxmsbi_url}/api/db/koob.dimensions/' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '[{"source_ident":"luxmsbi","cube_name":"example_koob_name","name":"example_dim_name","type":"SUM","title":"example_dim_title","sql_query":"example_col_name","config":{"possible_aggregations": ["mode", "count"]}},{"source_ident":"luxmsbi","cube_name":"example_koob_name_2","name":"example_dim_name_2","type":"STRING","title":"example_dim_title_2","sql_query":"example_col_name_2","config":{"possible_aggregations": []}}]'

HTTP статусы ответов

Код ответаОписание
200Успешная операция вставки
409Означает , что произошло нарушение ограничения уникальности ключа (например: совпадение id)
500Используется при любых внутренних ошибках сервера

Изменение размерности

Для внесения изменения в размерность необходимо выполнить HTTP PUT запрос. Поддерживается внесение изменений в атласные и глобальные размерности.

В случае внесения изменений в глобальную размерность используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.dimensions/${dimension_id}

В случае внесения изменений в атласную размерность используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.dimensions/${dimension_id}

  • luxmsbi_url - имя хоста,
  • atlas - название атласа,
  • dimension_id - идентификатор размерности, в которую вносятся изменения
к сведению

Для изменения одной определенной размерности нужно знать ее идентификатор. Идентификатор размерности указывается в URL запроса в сегменте ${dimension_id}, а список изменяемых полей и их значений передаётся в теле запроса в формате JSON.

Пример изменения глобальной размерности

curl 'http://${luxmsbi_url}/api/db/koob.dimensions/${dimension_id}' \
-X 'PUT' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"title":"new_dim_title"}'

Пример изменения атласной размерности

curl 'http://${luxmsbi_url}/api/db/${atlas}.dimensions/${dimension_id}' \
-X 'PUT' \
-H 'Content-Type: application/json' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}' \
--data-raw '{"title":"new_dim_title"}'

Пример ответа в случае успешного завершения операции

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
{
"id": "luxmsbi.example_koob_name.example_dim_name",
"source_ident": "luxmsbi",
"cube_name": "example_koob_name",
"name": "example_dim_name",
"type": "SUM",
"title": "new_dim_title",
"sql_query": "example_col_name",
"config": {
"possible_aggregations": [
"mode",
"count"
]
}
}
]

HTTP статусы ответов

Код ответаОписание
200Успешная операция изменения
404Объект не найден(например, при указании несуществующего id)
500Используется при любых внутренних ошибках сервера

Удаление размерности

Для удаления размерности необходимо выполнить HTTP DELETE запрос. Поддерживается удаление атласных и глобальных размерностей.

В случае удаления глобальной размерности используется следующий URL:

http(s)://${luxmsbi_url}/api/db/koob.dimensions/${dimension_id}

В случае удаления локальной размерности используется следующий URL:

http(s)://${luxmsbi_url}/api/db/${atlas}.dimensions/${dimension_id}

  • luxmsbi_url - имя хоста,
  • atlas - название атласа,
  • dimension_id - идентификатор размерности, в которую вносятся изменения
к сведению

Для удаления одной определенной размерности нужно знать её идентификатор. Идентификатор размерности указывается в URL запроса в сегменте ${dimension_id}.

Примеры запросов на удаление одной глобальной или локальной размерности:

Пример удаления глобальной размерности

curl 'http://${luxmsbi_url}/api/db/koob.dimensions/${dimension_id}' \
-X 'DELETE' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}'

Пример удаления локальной размерности

curl 'http://${luxmsbi_url}/api/db/${atlas}.dimensions/${dimension_id}' \
-X 'DELETE' \
-H 'Cookie: LuxmsBI-User-Session=${luxmsbi_cookie}'

Пример ответа при успешном удалении размерности

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
{
"id": "luxmsbi.example_koob_name.example_dim_name",
"name": "example_dim_name",
"type": "SUM",
"title": "example_dim_title",
"config": {
"possible_aggregations": [
"mode",
"count"
]
},
"cube_name": "example_koob_name",
"sql_query": "example_col_name",
"source_ident": "luxmsbi"
}
]

HTTP статусы ответов

Код ответаОписание
200Успешная операция удаления
404Объект не найден(например, при указании несуществующего id)
500Используется при любых внутренних ошибках сервера