ペンタホを初めて使っています。基本的に私は、階層構造のデータを必要とします。ここでは、階層のサブセットを選択し、下位レベルのノードでカウント/サムを計算し、レベルごとにレベルを上げる必要があります。 SQLで一時変数に更新を行った後、テーブル変数(ここでの主なポイントは、私がデータテーブルにすべての更新をしないメモリでこれを行う必要があり、ということです。)ペンタホのメモリテーブル変数のSQLアップデートを模倣する方法
DECLARE @ConsolidateMaster TABLE
(
-- my fields
)
INSERT @ConsolidateMaster
--select some sub set data and inset into table variable
UPDATE A
SET A.[DIR_REPORT_CNT] = 0,
A.[DIR_REPORT_COST] = 0,
A.[TOTAL_REPORT_CNT] = 0,
A.[TOTAL_REPORT_COST] = 0
FROM @ConsolidateMaster A
LEFT JOIN @ConsolidateMaster B
ON A.EMP_ID = B.SUPERVISOR_ID
WHERE B.EMP_ID IS NULL AND A.PROJ_CD = @PROJ_CD
--GO UP LEVEL BY LEVEL AND START COUNTING THE TOTAL + COST
DECLARE @MAX_LEVEL INT = (SELECT MAX(SUPERVISOR_LAYER) FROM @ConsolidateMaster WHERE PROJ_CD = @PROJ_CD)
WHILE (SELECT COUNT(1) FROM @ConsolidateMaster WHERE [DIR_REPORT_CNT] IS NULL) > 0
BEGIN
UPDATE
A
SET
A.DIR_REPORT_CNT = B.DIR_REPORT_CNT,
A.DIR_REPORT_COST = B.DIR_REPORT_COST,
A.TOTAL_REPORT_CNT = B.TOTAL_REPORT_CNT,
A.TOTAL_REPORT_COST = B.TOTAL_REPORT_COST
FROM @ConsolidateMaster A
INNER JOIN
(
SELECT
C.SUPERVISOR_ID,
COUNT(1) DIR_REPORT_CNT,
SUM(ISNULL(ANNUAL_COST,0)) DIR_REPORT_COST,
SUM(C.[TOTAL_REPORT_CNT]) + COUNT(1) TOTAL_REPORT_CNT,
SUM(C.TOTAL_REPORT_COST) + SUM(ISNULL(ANNUAL_COST,0)) TOTAL_REPORT_COST
FROM @ConsolidateMaster C
WHERE
C.SUPERVISOR_LAYER = @MAX_LEVEL
AND C.PROJ_CD = @PROJ_CD
GROUP BY
C.SUPERVISOR_ID
) B
ON A.EMP_ID = B.SUPERVISOR_ID
WHERE A.PROJ_CD = @PROJ_CD
AND A.SUPERVISOR_LAYER < @MAX_LEVEL
SET @MAX_LEVEL = @MAX_LEVEL - 1
END
を使用してSQLを実行するために私はちょうど選択することになります* @ConsolidateMasterから*。 pentahoで同様の機能をどのように実装できますか?
これですべて完了し、SQLで準備ができたら、なぜPDIが必要ですか?あなたが意図した解決策をより詳細に記述すると、「グループを使用する」よりも具体的な答えを人々がより簡単に伝えることができます。 – Cyrus
@Cyrusこれは私の上司に語ったものですが、私たちはJDBCとPentahoを使用しており、現在dbにストアプロシージャがないと言いました。 (基本的にアーキテクチャ別)。具体的な解決策は必要ありません。ペンタホでテーブル変数の機能をどのように複製するかのヒントが必要です。 (行更新操作をメモリ内で行う) –