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
AS
-- Sign physical contracted quantities
WITH purchase_position AS (
SELECT
FTL."intTradeId",
FTL."Trade Category",
FTL."Delivery Date",
CASE
WHEN FTL."Trade Type" = 'Purchase' THEN 1
ELSE -1
END * FTL."Quantity" AS "Quantity"
FROM vw_bi_fct_trade_line AS FTL
UNION ALL
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 ) AS "Open Position Quantity"
FROM vw_bi_fct_trade_line AS Contracts
LEFT JOIN (
-- Deduct delivered quantities
SELECT
FFE."inTradeId",
FFE."Trade Category",
FFE."Event Date" AS "Delivery Date",
CASE
WHEN FFE."Trade Type" = 'Purchase' THEN -1
ELSE 1
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",
FFE."Trade Category",
FFE."Event Date",
FFE."Trade Type";
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;
ALTER TABLE public.vw_bi_fct_open_position
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
SELECT
SM."intPurchaseLineId" AS "inTradeId",
'Physical' AS "Trade Category",
'Purchase' AS "Trade Type",
'Delivered' AS "Event Type",
SM."dtmBLDate" AS "Event Date",
SM."dblQuantity" AS "Quantity"
@@ -12,6 +16,7 @@ CREATE OR REPLACE VIEW vw_bi_fct_trade_fulfillment_event AS
SELECT
SM."intSaleLineId" AS "inTradeId",
'Physical' AS "Trade Category",
'Sale' AS "Trade Type",
'Delivered' AS "Event Type",
SM."dtmBLDate" AS "Event Date",
SM."dblQuantity" AS "Quantity"