Как создать таблицу истории в представлении калькуляции для каждого дня на основе измерения времени - PullRequest
0 голосов
/ 24 июня 2019

У меня очень указанная проблема HANA / SQLScript. Мне нужно создать представление истории для каждого дня в форме расчета сценариев на основе таблицы с пробелами даты?

Я пробовал каждое перекрестное соединение с "_SYS_BI". "M_TIME_DIMENSION" и просто использовал функции.

По моему опыту, перекрестные соединения идеальны для кумулятивной суммы, но не для показа единственного значения.

HANA не позволяет использовать столбцы в качестве входных параметров для табличных функций.

Скалярные функции также нельзя использовать в режиме расчета. Я могу активировать это представление, но не могу прочитать данные из него. Даже если автономная функция работает нормально:

Таблица скидок делового партнера:

 CREATE COLUMN TABLE "BP_DISCOUNT" ("BP_CODE" VARCHAR(50) NOT NULL ,
         "DATE" DATE L ,
         "DISCOUNT" DECIMAL(21,6);


insert into "BP_DISCOUNT" values('abc','20190101','0');
insert into "BP_DISCOUNT" values('abc','20190105','5');
insert into "BP_DISCOUNT" values('abc','20190110','10');

Моя функция, которую я хотел использовать вместо:

CREATE FUNCTION bp_discountF (BP_Code varchar(50), Date_D date)
 RETURNS discount decimal(21,6)
 LANGUAGE SQLSCRIPT 
 SQL SECURITY INVOKER 
 AS
 BEGIN

 select  "DISCOUNT" into DISCOUNT
from "BP_DISCOUNT" d
where 
:BP_CODE = d."BP_CODE" and d."DATE"<= :DATE_D order by d."DATE" desc limit 1;
 END;

Моя цель - создать представление, отображающее значения скидок для каждого возможного дня на основе самых последних значений. Он должен быть в форме представления расчета по сценарию, чтобы присоединить его к более сложным представлениям отчета о продажах.

Ожидаемый результат - присоединение к нему в BP и дата документа:

...
'abc', '20190101', 0;
'abc', '20190102', 0;
'abc', '20190103', 0;
'abc', '20190104', 0;
'abc', '20190105', 5;
'abc', '20190106', 5;
'abc', '20190107', 5;
'abc', '20190108', 5;
'abc', '20190109', 5;
'abc', '20190110', 10;
'abc', '20190111', 10;
..
...