У нас идентичная структура БД, но разбита по клиентам.
Соответственно настроив один куб, я бы хотел в идеале продублировать его, поменять источник данных и пользоваться им. Но таких кнопок в действиях с кубом не вижу.
Да, возможность переносить или копировать кубы есть, это можно сделать двумя способами:
Способ 1
Так как любой куб это плоская таблица, в ее основе лежит SQL-запрос. Просмотреть его можно как в режиме Self-Service, открыв раздел Источники Данных → Кубы (в v8 этот раздел доступен только в административном интерфейсе). Нажав на иконку “Редактировать” рядом с нужным кубом вы можете просмотреть его SQL запрос. Вы можете скопировать его и вставить в соответствующее поле при создании нового куба. При необходимости вы можете внести изменения в запрос.
Способ 2 (для глобальных кубов)
-
Определиться с кубом, который копируем и заменяем в условии where
'luxmsbi.custom_report'
на латинское имя куба наWHERE id='luxmsbi.custom_report'
-
Определиться с именем куба для копии и заменить строки ниже в обоих скриптах на придуманное имя:
'Моя копия куба'
'my_copy_cube'
-
Если имя источника поменялось, то заменяем строку ниже в обоих скриптах на придуманное имя:
'my_copy_source'
-
Прежде, чем выполнять скрипт, необходимо, чтобы источник был создан, название которого поменяли. Если всё хорошо, то выполняем следующий скрипт.
INSERT INTO koob.cubes
(id, source_ident, "name", title, sql_query, config)
SELECT replace(source_ident, source_ident, 'my_copy_source') || '.' || REPLACE("name","name", 'my_copy_cube') AS id,
replace(source_ident, source_ident, 'my_copy_source') AS source_ident,
REPLACE("name","name", 'my_copy_cube') AS "name",
replace(title,title, 'Моя копия куба') AS title ,
sql_query, config
FROM koob.cubes
WHERE id='luxmsbi.custom_report';
.5. Выполнить скрипт ниже, заменив по аналогии
INSERT INTO koob.dimensions
(id, source_ident, cube_name, "name", "type", title, sql_query, config)
SELECT replace(source_ident, source_ident, 'my_copy_source') || '.' || REPLACE(cube_name,cube_name, 'my_copy_cube') || '.' || "name" AS id,
replace(source_ident, source_ident, 'my_copy_source') AS source_ident,
REPLACE(cube_name,cube_name, 'my_copy_cube') AS cube_name,
"name", "type", title, sql_query, config
FROM koob.dimensions
WHERE id LIKE 'luxmsbi.custom_report%';
Второй способ (для локальных кубов)
-
Определиться с кубом, который копируем и заменяем в условии where
'luxmsbi.custom_report'
на латинское имя куба
WHERE id='luxmsbi.custom_report'
WHERE id LIKE 'luxmsbi.custom_report%';
-
Определиться с именем куба для копии и заменить строки ниже в обоих скриптах на придуманное имя:
'Моя копия куба'
'my_copy_cube'
-
Если имя источника поменялось, то заменяем строку ниже в обоих скриптах на придуманное имя:
'my_copy_source'
-
Прежде, чем выполнять нижепредложенный скрипт, необходимо, чтобы источник был создан в имя_атласа._data_sources, название которого поменяли. Если всё хорошо, то выполняем скрипт ниже.
INSERT INTO имя_атласа."_cubes"
(id, atlas_source_ident, "name", title, sql_query, config)
SELECT replace(atlas_source_ident, atlas_source_ident, 'my_copy_source') || '.' || REPLACE("name","name", 'my_copy_cube') AS id,
replace(atlas_source_ident, atlas_source_ident, 'my_copy_source') AS atlas_source_ident,
REPLACE("name","name", 'my_copy_cube') AS "name",
replace(title, title, 'Моя копия куба') AS title ,
sql_query, config
FROM имя_атласа."_cubes"
WHERE id='luxmsbi.custom_report';
.5. Выполнить скрипт ниже, заменив по аналогии
INSERT INTO имя_атласа."_dimensions"
(id, "name", "type", title, sql_query, config, atlas_cube_id)
SELECT
REPLACE(split_part(id, '.', 1), split_part(id, '.', 1), 'my_copy_source') || '.' ||
REPLACE(split_part(id, '.', 2), split_part(id, '.', 2), 'my_copy_cube') || '.' || split_part(id, '.', 3) AS id,
"name",
"type",
title,
sql_query,
config,
REPLACE(split_part(atlas_cube_id, '.', 1), split_part(atlas_cube_id, '.', 1), 'my_copy_source') || '.' ||
REPLACE(split_part(atlas_cube_id, '.', 2), split_part(atlas_cube_id, '.', 2), 'my_copy_cube') as atlas_cube_id
FROM имя_атласа."_dimensions"
WHERE atlas_cube_id LIKE 'luxmsbi.custom_report%';