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 @@
CREATE OR REPLACE VIEW vw_bi_fct_open_position --DROP VIEW IF EXISTS vw_bi_fct_open_position;
AS
-- Sign physical contracted quantities CREATE OR REPLACE VIEW vw_bi_fct_open_position
SELECT
FTL."intTradeId", AS
FTL."Trade Category",
FTL."Delivery Date", WITH purchase_position AS (
CASE SELECT
WHEN FTL."Trade Type" = 'Purchase' THEN 1 Contracts."intTradeId",
ELSE -1 Contracts."Trade Category",
END * FTL."Quantity" AS "Quantity" Contracts."Trade Type",
FROM vw_bi_fct_trade_line AS FTL Contracts."Delivery Date",
UNION ALL TO_CHAR(Contracts."Delivery Date", 'YYYY-MM') AS "delivery_month",
-- Deduct delivered quantities TO_CHAR(Contracts."Delivery Date", 'Mon YYYY') AS "delivery_month_label",
SELECT Contracts."Quantity",
FFE."inTradeId", Contracts."Quantity" - COALESCE( Delivery."delivered_quantity" , 0 ) AS "Open Position Quantity"
FFE."Trade Category", FROM vw_bi_fct_trade_line AS Contracts
FFE."Event Date" AS "Delivery Date", LEFT JOIN (
CASE -- Deduct delivered quantities
WHEN FFE."Trade Type" = 'Purchase' THEN -1 SELECT
ELSE 1 FFE."inTradeId",
END * SUM(FFE."Quantity") AS "Quantity" SUM(FFE."Quantity") AS "delivered_quantity"
FROM vw_bi_fct_trade_fulfillment_event AS FFE
WHERE FFE."Trade Category" = 'Physical'
AND FFE."Trade Type" = 'Purchase'
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",
SUM(FFE."Quantity") AS "delivered_quantity"
FROM vw_bi_fct_trade_fulfillment_event AS FFE
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;
FROM vw_bi_fct_trade_fulfillment_event AS FFE
WHERE FFE."Trade Category" = 'Physical'
GROUP BY
FFE."inTradeId",
FFE."Trade Category",
FFE."Event Date",
FFE."Trade Type";
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"
@@ -10,8 +14,9 @@ CREATE OR REPLACE VIEW vw_bi_fct_trade_fulfillment_event AS
AND COALESCE( SM."intPurchaseLineId" , 0 ) > 0 AND COALESCE( SM."intPurchaseLineId" , 0 ) > 0
UNION ALL UNION ALL
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"