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
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
-- 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"
FROM vw_bi_fct_trade_fulfillment_event AS FFE CREATE OR REPLACE VIEW vw_bi_fct_open_position
WHERE FFE."Trade Category" = 'Physical'
GROUP BY AS
FFE."inTradeId",
FFE."Trade Category", WITH purchase_position AS (
FFE."Event Date", SELECT
FFE."Trade Type"; 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",
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;
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"