Push fct_open_position and fct_trade_fullfillment_event

This commit is contained in:
AzureAD\SylvainDUVERNAY
2026-02-13 14:04:56 +01:00
parent 0fa522ece6
commit 98f4dfc2c8
2 changed files with 74 additions and 31 deletions

View File

@@ -1,35 +1,73 @@
--DROP VIEW IF EXISTS vw_bi_fct_open_position;
CREATE OR REPLACE VIEW vw_bi_fct_open_position CREATE OR REPLACE VIEW vw_bi_fct_open_position
AS AS
-- Sign physical contracted quantities
WITH purchase_position AS (
SELECT SELECT
FTL."intTradeId", Contracts."intTradeId",
FTL."Trade Category", Contracts."Trade Category",
FTL."Delivery Date", Contracts."Trade Type",
CASE Contracts."Delivery Date",
WHEN FTL."Trade Type" = 'Purchase' THEN 1 TO_CHAR(Contracts."Delivery Date", 'YYYY-MM') AS "delivery_month",
ELSE -1 TO_CHAR(Contracts."Delivery Date", 'Mon YYYY') AS "delivery_month_label",
END * FTL."Quantity" AS "Quantity" Contracts."Quantity",
FROM vw_bi_fct_trade_line AS FTL Contracts."Quantity" - COALESCE( Delivery."delivered_quantity" , 0 ) AS "Open Position Quantity"
UNION ALL FROM vw_bi_fct_trade_line AS Contracts
LEFT JOIN (
-- Deduct delivered quantities -- Deduct delivered quantities
SELECT SELECT
FFE."inTradeId", FFE."inTradeId",
FFE."Trade Category", SUM(FFE."Quantity") AS "delivered_quantity"
FFE."Event Date" AS "Delivery Date",
CASE
WHEN FFE."Trade Type" = 'Purchase' THEN -1
ELSE 1
END * SUM(FFE."Quantity") AS "Quantity"
FROM vw_bi_fct_trade_fulfillment_event AS FFE FROM vw_bi_fct_trade_fulfillment_event AS FFE
WHERE FFE."Trade Category" = 'Physical' WHERE FFE."Trade Category" = 'Physical'
AND FFE."Trade Type" = 'Purchase'
GROUP BY GROUP BY
FFE."inTradeId"
) AS Delivery ON Contracts."intTradeId" = Delivery."inTradeId"
WHERE 1=1
AND Contracts."Trade Category" = 'Physical'
AND Contracts."Trade Type" = 'Purchase'
)
,sale_position AS (
SELECT
Contracts."intTradeId",
Contracts."Trade Category",
Contracts."Trade Type",
Contracts."Delivery Date",
TO_CHAR(Contracts."Delivery Date", 'YYYY-MM') AS "delivery_month",
TO_CHAR(Contracts."Delivery Date", 'Mon YYYY') AS "delivery_month_label",
Contracts."Quantity",
(Contracts."Quantity" - COALESCE( Delivery."delivered_quantity" , 0 ) ) * (-1) AS "Open Position Quantity"
FROM vw_bi_fct_trade_line AS Contracts
LEFT JOIN (
-- Deduct delivered quantities
SELECT
FFE."inTradeId", FFE."inTradeId",
FFE."Trade Category", SUM(FFE."Quantity") AS "delivered_quantity"
FFE."Event Date", FROM vw_bi_fct_trade_fulfillment_event AS FFE
FFE."Trade Type"; WHERE FFE."Trade Category" = 'Physical'
AND FFE."Trade Type" = 'Sale'
GROUP BY
FFE."inTradeId"
) AS Delivery ON Contracts."intTradeId" = Delivery."inTradeId"
WHERE 1=1
AND Contracts."Trade Category" = 'Physical'
AND Contracts."Trade Type" = 'Sale'
)
SELECT *
FROM purchase_position
UNION ALL
SELECT *
FROM sale_position;
ALTER TABLE public.vw_bi_fct_open_position ALTER TABLE public.vw_bi_fct_open_position
OWNER TO postgres; OWNER TO postgres;

View File

@@ -1,7 +1,11 @@
--DROP VIEW IF EXISTS vw_bi_fct_trade_fulfillment_event;
CREATE OR REPLACE VIEW vw_bi_fct_trade_fulfillment_event AS CREATE OR REPLACE VIEW vw_bi_fct_trade_fulfillment_event AS
SELECT SELECT
SM."intPurchaseLineId" AS "inTradeId", SM."intPurchaseLineId" AS "inTradeId",
'Physical' AS "Trade Category", 'Physical' AS "Trade Category",
'Purchase' AS "Trade Type",
'Delivered' AS "Event Type", 'Delivered' AS "Event Type",
SM."dtmBLDate" AS "Event Date", SM."dtmBLDate" AS "Event Date",
SM."dblQuantity" AS "Quantity" SM."dblQuantity" AS "Quantity"
@@ -12,6 +16,7 @@ CREATE OR REPLACE VIEW vw_bi_fct_trade_fulfillment_event AS
SELECT SELECT
SM."intSaleLineId" AS "inTradeId", SM."intSaleLineId" AS "inTradeId",
'Physical' AS "Trade Category", 'Physical' AS "Trade Category",
'Sale' AS "Trade Type",
'Delivered' AS "Event Type", 'Delivered' AS "Event Type",
SM."dtmBLDate" AS "Event Date", SM."dtmBLDate" AS "Event Date",
SM."dblQuantity" AS "Quantity" SM."dblQuantity" AS "Quantity"