1 つのディメンション、1 つのメジャー、およびフィルター (where 句) を指定して分析ビューを探索できるプロシージャを作成しています。
drop procedure dynamicExploration;
create procedure dynamicExploration(in currentMeasure double, in filter_string
varchar(100), out dataSubset dataExplorationOutputType)
language sqlscript as
begin
dataSplitby = select CITY as ID, SUM(:currentMeasure) as SUM_MEASURE from
_SYS_BIC."package/analyticView" Group by CITY;
--dataSubset = APPLY_FILTER(:dataSplitby, :filter_string);
dataSubset = select * from :dataSplitBy;
end;
ここで、dataSubset は次のように定義されたデータ型です。
drop type dataExplorationOutputType;
create type dataExplorationOutputType as table("ID" varchar(100), "SUM_MEASURE" double);
しかし、このエラーが発生しています。何が問題なのかを確認してください。
Could not execute 'create procedure dynamicExploration(in currentMeasure double, in
filter_string varchar(100), out ...' in 166 ms 8 µs .
SAP DBTech JDBC: [266] (at 200): inconsistent datatype: only numeric type is available
for aggregation function: line 4 col 36 (at pos 200)
currentMeasure を varchar として定義しようとしましたが、それでも同じエラーが発生します。
私が最終的に達成しようとしているのは、ユーザーによって定義された特定のパラメーター (ディメンション、メジャー、およびフィルター) のセットに基づいて、別のプロシージャーがデータのサブセットを選択するのに役立つストアド プロシージャーを作成することです。
プロシージャの動的探索を削除します。
create procedure dynamicExploration(in currentDimension varchar(100), in currentMeasure double, in filter_string
varchar(100), out dataSubset dataExplorationOutputType)
language sqlscript as
begin
dataSplitby = select :currentDimension as ID, SUM(:currentMeasure) as SUM_MEASURE from
_SYS_BIC."package/analyticView" Group by :currentDimension;
dataSubset = APPLY_FILTER(:dataSplitby, :filter_string);
--dataSubset = select * from :dataSplitBy;
end;
推奨されない機能である動的 SQL に基づいて、この種の動的探索を行う手順を既に作成しました。私が探しているのは、この種の分析ビュー (データ キューブ) の動的な調査を行うためのより良いソリューション/アイデアです。
ありがとう