0

PostgreSQLにテーブル 'TICKETS'があります。このテーブルを作成するためにPentahoを使用してETLジョブを実行します。 ユーザーが変更を加え、その結果がこの表に反映されるGUIもあります。表中の フィールドは次のとおりです。Pentahoを使用した更新/マージ/寸法の参照/更新の挿入

"OID" Char(36) <------ **PRIMARY KEY** 
, "CUSTOMER" VARCHAR(255) 
, "TICKETID" VARCHAR(255) 
, "PRIO_ORIG" CHAR(36) 
, "PRIO_COR" CHAR(36) 
, "CATEGORY" VARCHAR(255) 
, "OPENDATE_ORIG" TIMESTAMP 
, "OPENDATE_COR" TIMESTAMP 
, "TTA_ORIG" TIMESTAMP 
, "TTA_COR" TIMESTAMP 
, "TTA_DUR" DOUBLE PRECISION 
, "MTTA_TARGET" DOUBLE PRECISION 
, "TTA_REL_ORIG" BOOLEAN 
, "TTA_REL_COR" BOOLEAN 
, "TTA_DISCOUNT_COR" DOUBLE PRECISION 
, "TTA_CHARGE_COR" DOUBLE PRECISION 
, "TTR_ORIG" TIMESTAMP 
, "TTR_COR" TIMESTAMP 
, "TTR_DUR" DOUBLE PRECISION 
, "MTTR_TARGET" DOUBLE PRECISION 
, "TTR_REL_ORIG" BOOLEAN 
, "TTR_REL_COR" BOOLEAN 
, "TTR_DISCOUNT_COR" DOUBLE PRECISION 
, "TTR_CHARGE_COR" DOUBLE PRECISION 
, "COMMENT" VARCHAR(500) 
, "USER" CHAR(36) 
, "MODIFY_DATE" TIMESTAMP 
, "CORRECTED" BOOLEAN 
, "OPTIMISTICLOCKFIELD" INTEGER 
, "GCRECORD" INTEGER 
, "ORIGINATOR" Char(36) 

私は列TICKETID +創始+顧客が同じである場合、テーブルを更新します。それ以外の場合は、挿入が実行されます。

ペンタホを使ってどうすればいいですか?ディメンション/ルックアップのステップはそれに適していますか、または更新/挿入ステップだけで作業が行われますか?

ご協力いただければ幸いです。前もって感謝します。

+0

TICKETID + ORIGINATOR + CUSTOMERS列にユニークなインデックスがありますか?それから、 'INSERT ... ON CONFLICT DO UPDATE SET column = EXCLUDED.column;' https://www.postgresql.org/docs/9.5/static/sql-insert.htmlを使用することができます –

答えて

0

ユージンLisitskyの提案は良い習慣です:あなたは、ハードデータベース制約でそれを配線しPostgesSQLが仕事をやらせることがあります。 PDIソリューションの

:あなたのテーブルがゆっくりしたがって、挿入/更新があなたの必要性をカバーして寸法を変更するようにしていません。

Dimension_updateを使用する場合は、Pentaho SCD形式の表を変更する必要があります。バージョン列とvalid_form_date/valid_upto_dateを追加する必要があります(PDIの場合、変更はワンボタン操作です)。

その後、新しい行が入力されると、表のTICKETID + ORIGINATOR + CUSTOMERSが検索され、見つかった場合はvalitity_upto = now()を受け取ります。同時にnow()からend-of-timeまで有効なテーブルにバージョン+ 1が作成されます。

(メイン)プロは、それがvalidity_fromとvalidity_upto間の)どこになりました(単純に過去の任意の日付であったように、データベースの状態を取得することができるということです。

(魅杏)conが、あなたがたGUI(複数)に何らかの影響を与える可能性があるテーブルを変更しなければならないということです。

関連する問題