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_query | SQL запрос для куба | 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 | Используется при любых внутренних ошибках сервера |