|
|
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Добрый день! Такая задача... Есть плоская табличка с периодами следующего типа (аналогично и для других готов): Таблица периодов T055_LONG_NAME T055_ID LVL ORDER_NUM 2018 год 1 квартал 1969 4 61 2018 год 2 квартал 1973 4 62 2018 год 1 полугодие 1969 2 63 2018 год 1 полугодие 1973 2 64 2018 год 3 квартал 1977 4 65 2018 год 9мес. 1969 3 66 2018 год 9мес. 1973 3 67 2018 год 9мес. 1977 3 68 2018 год 4 квартал 1981 4 69 2018 год 2 полугодие 1977 2 70 2018 год 2 полугодие 1981 2 71 2018 год 1969 1 72 2018 год 1973 1 73 2018 год 1977 1 74 2018 год 1981 1 75 То есть в этой табличке есть id квартала, соответственно полугодие, год и 9 месяцев собирается по id-квартала. Эта табличка джойнится с основной табличкой, где лежат суммы (три столбца сумм - sum1, sum2, sum3). T055_ID SUM 1 SUM2 SUM3 В BI нужно, чтобы выдавало так SUM1(в итог берём сумму по 1-му кварталу) - за 1-е полугодие берём сумму из 1-го квартала, 2-е полугодие - берём сумму из 2-го квартала, 9 месяцев - берём сумму из 1-го квартала, за год - из первого квартала SUM2 - в итоги берём сумму по всем кварталам, те 1-е полугодие - сумма 1,2-го квартала, ..... год - сумма 1-4 квартала. SUM3(берм сумму по последнему кварталу) - за 1-е полугодие берём сумму из 2-го квартала, 2-е полугодие - берём сумму из 4-го квартала, 9 месяцев - берём сумму из 4-го квартала, за год - из 4-го квартала В одной таблице среза может быть сразу 3 суммы (SUM1, SUM2, SUM3). Подскажите, как лучше сделать это? Взгляд замылил((( Если бы была нормальная иерархия в таблице периода - можно было бы сделать дименшен Lavel-Based и на таблицу с периодами и натравить на SUM1, SUIM2, SUM3 - FIRST, SUM, LAST. А так, я пока не представляю как сделать. Если есть какие то мысли - буду очень признателен... Не бросайте в беде(( В примере привожу, что как сейчас считается для SUM1 - так как всё осортированно по ORDER_NUM, сейчас берётся первая id. Если в срез вынести T055_ID и добавить его в исключенные - корректно посчитается SUM2. Как посчитать SUM3 и ещё, чтобы SUM1, SUM2, SUM3 считались в соответствии с моими правилами - не знаю((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2019, 16:37 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2019, 16:37 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, Я бы начал Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. В фактовой таблице должны быть остатки на начало месяца. Создаете логический DIM - иерархию. И делаете 3 меры в факте на бизнес слое, прям как и задумывали - first,sum,last (в вариациях) Как то особняком 9 месяцев выбивается... тут надо подумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2019, 19:42 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Тут хотелось бы, чтобы в табличке в БД перечисление квартала, полугодие, 9 месяцев, год - шло в столбик, как приводил в начале в примере, чтобы в таблице среза нарисовать красиво шапку в bi. 2018 год 1 квартал 2018 год 2 квартал 2018 год 1 полугодие 2018 год 1 полугодие 2018 год 3 квартал 2018 год 9мес. 2018 год 9мес. 2018 год 9мес. 2018 год 4 квартал 2018 год 2 полугодие 2018 год 2 полугодие 2018 год 2018 год 2018 год 2018 год А так получается - мы возвращаемся к обычной иерархии, где будут столбцы c id месяц, квартал, год, 9 месяцев, год: M_ID, Q_ID, M9_ID, Y_ID. Нельзя ли, отталкиваясь от моей структуры - построить иерархи? Мысль была сделать ещё столбец PARENT_ID, сделать dimenshion: parent_child_hierarchy и построить first, sum, last. Но не уверен, что так можно. Поправьте, в чем не прав. Немного подвис на этой задаче... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 12:48 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Вот какая громозская шапка получается, если делать по вашему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 18:27 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Извинясь, не та картинка. Эта картинка как раз по первому варианту моему. Вот по вашему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 18:29 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Собственно сама табличка, что получилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 18:35 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, Вопрос же наверное не в том, какая картинка/шапка - лучше, а в правильном вычислении средствами BI нужных мер. Вы можете предоставить контрольный пример? Вот остатки за месяца 2018 такие то, а вот результат который мы должны получить вот такой то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 06:26 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
Набросал тестовый пример. Здесь три таблички: TEST_SUM - табличка с суммами TEST_KOD - коды(привел просто как пример) TEST_TIME - период SET DEFINE OFF; --SQL Statement which produced this data: -- -- SELECT * FROM DS_BOP_BI.TEST_SUM; -- Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (5, 7, 2, 1969, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (2, 1, 3, 1977, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (7, 4, 2, 1981, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (4, 3, 5, 1969, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (12, 3, 4, 1973, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (4, 6, 1, 1973, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (3, 1, 5, 1977, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (8, 2, 5, 1981, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (3, 1, 2, 1969, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (2, 3, 1, 1969, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (2, 6, 9, 1973, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (2, 1, 8, 1973, 20); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (5, 1, 2, 1977, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (3, 1, 8, 1977, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (5, 3, 8, 1981, 10); Insert into DS_BOP_BI.TEST_SUM (SUM_IN, SUM_OP, SUM_OUT, QUART_ID, KOD_ID) Values (8, 4, 2, 1981, 10); COMMIT; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 18:51 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, TEST_KOD Insert into DS_BOP_BI.TEST_KOD (KOD, KOD_ID) Values (1, 10); Insert into DS_BOP_BI.TEST_KOD (KOD, KOD_ID) Values (2, 20); COMMIT; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 18:52 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год', TO_DATE('01/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1969, 1, '201850', '2018', 72, 16, 'Y', 1968); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год', TO_DATE('04/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('06/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1973, 1, '201850', '2018', 73, 17, 'Y', 1968); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год', TO_DATE('07/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1977, 1, '201850', '2018', 74, 18, 'Y', 1968); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год', TO_DATE('10/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1981, 1, '201850', '2018', 75, 19, 'Y', 1968); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 1 квартал', TO_DATE('01/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1969, 4, '201810', '2018', 61, 5, 'Y', 1969); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 2 квартал', TO_DATE('04/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('06/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1973, 4, '201820', '2018', 62, 6, 'Y', 1973); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 3 квартал', TO_DATE('07/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1977, 4, '201830', '2018', 65, 9, 'Y', 1977); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 4 квартал', TO_DATE('10/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1981, 4, '201840', '2018', 69, 13, 'Y', 1981); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 1-ое пол.', TO_DATE('01/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1969, 2, '201821', '2018', 63, 7, 'Y', 100021); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 1-ое пол.', TO_DATE('04/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('06/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1973, 2, '201821', '2018', 64, 8, 'Y', 100021); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 9 мес.', TO_DATE('07/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1977, 3, '201831', '2018', 68, 12, 'Y', 100055); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 9 мес.', TO_DATE('01/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1969, 3, '201831', '2018', 66, 10, 'Y', 100055); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 9 мес.', TO_DATE('04/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('06/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1973, 3, '201831', '2018', 67, 11, 'Y', 100055); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 2-ое пол.', TO_DATE('10/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1981, 2, '201841', '2018', 71, 15, 'Y', -750000); Insert into DS_BOP_BI.TEST_TIME (T055_LONG_NAME, T055_START_DATE, T055_END_DATE, T055_ID, LVL, DATE_CODE, YEAR_CODE, ORDER_NUM, ORDER_NUM_DESC, T010_IS_ACTIVE, T055_FULL_ID) Values ('2018 год 2-ое пол.', TO_DATE('07/01/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('09/30/2018 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 1977, 2, '201841', '2018', 70, 14, 'Y', -760000); COMMIT; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 18:53 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, Скрипты табличек CREATE TABLE TEST_SUM ( SUM_IN NUMBER, SUM_OP NUMBER, SUM_OUT NUMBER, QUART_ID NUMBER, KOD_ID NUMBER ) TABLESPACE ... RESULT_CACHE (MODE DEFAULT) LOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING; COMMENT ON COLUMN DS_BOP_BI.TEST_SUM.SUM_IN IS 'Входящая сумма'; COMMENT ON COLUMN DS_BOP_BI.TEST_SUM.SUM_OP IS 'Сумма ОП'; COMMENT ON COLUMN DS_BOP_BI.TEST_SUM.SUM_OUT IS 'Исходящая сумма'; COMMENT ON COLUMN DS_BOP_BI.TEST_SUM.QUART_ID IS 'ИД-квартала'; CREATE TABLE DS_BOP_BI.TEST_KOD ( KOD NUMBER, KOD_ID NUMBER ) TABLESPACE .... RESULT_CACHE (MODE DEFAULT) LOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING; CREATE TABLE DS_BOP_BI.TEST_TIME ( T055_LONG_NAME VARCHAR2(255 BYTE), T055_START_DATE DATE, T055_END_DATE DATE, T055_ID NUMBER, LVL NUMBER, DATE_CODE VARCHAR2(44 BYTE), YEAR_CODE VARCHAR2(4 BYTE), ORDER_NUM NUMBER, ORDER_NUM_DESC NUMBER, T010_IS_ACTIVE CHAR(1 BYTE), T055_FULL_ID NUMBER ) TABLESPACE ... RESULT_CACHE (MODE DEFAULT) LOGGING NOCOMPRESS NOCACHE NOPARALLEL MONITORING; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 19:02 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 19:03 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 19:04 |
|
||
|
Построение итогов по кварталу, полугодию, году c использованием FIRST, LAST в OBIEE 11
|
|||
|---|---|---|---|
|
#18+
zorlo, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2019, 19:05 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39852349&tid=1857517]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
5ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 409ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...