I have a table that needs to give me all data up until yesterday. This will
be part of an SSIS package that runs monthly, a day before the last day.
code is:

-- Create the new table if it doesn't exist and insert data
CREATE TABLE IF NOT EXISTS "model"."IMETA_ZTBR_BRACS_Model_TA_BW" AS
SELECT
    fact."ZTBR_TransactionCode",
    fact."Company_Code",
    fact."Posting_Period",
    fact."Fiscal_Year",
    fact."Profit_Center",
    fact."Account_Number",
    fact."Business_Process",
    fact."Internal_Order",

    fact."Amount_in_Company_Code_Currency",
    fact."Company_Code_Currency",
    fact."BRACS_FA",
    fact."Expense_Type",
    fact."BRACS_ACCT_Key",
    fact."CC_Direct",
    fact."Segment_PC",
    fact."CC_Master_FA",
    fact."Region_Secondary_Key",
    fact."Direct_Indirect_Secondary_Key",
    fact."Source_Description_Secondary_Key",
    fact."Entity_Secondary_Key",
    fact."Master_BRACS_Secondary_Key",
    bracs_map."Acct Type",
    bracs_map."Level 1" AS "BRACS_Level1",
    bracs_map."Level 2" AS "BRACS_Level2",
    bracs_map."Level 3" AS "BRACS_Level3",
    bracs_map."GCoA",
    bracs_map."Account Desc",
    bracs_map."EXPENSE FLAG",
    bracs_map."BRACS",
    bracs_map."BRACS_DESC",
    bracs_map."Primary_ZTBR_TransactionCode",
    direct_indirect_map."BRACS Account Description",
    direct_indirect_map."CLASSIFICATION",
    direct_indirect_map."Direct_Primary_Key",
    region_map."CoCd",
    region_map."Region",
    region_map."Sub Region",
    region_map."BRACS Entity",
    region_map."Consul",
    region_map."Report",
    region_map."Region BRACS",
    region_map."Group",
    region_map."Group BRACS",
    region_map."Region_Primary_Key",
    entity_map."Entity",
    entity_map."Entity Name",
    entity_map."Entity Level",
    entity_map."Level 1" AS "Entity_Level1",
    entity_map."Level 2" AS "Entity_Level2",
    entity_map."Level 3" AS "Entity_Level3",
    entity_map."Level 4" AS "Entity_Level4",
    entity_map."Level 5" AS "Entity_Level5",
    entity_map."Level 6" AS "Entity_Level6",
    entity_map."Entity_ID",
    src_desc_map."BRACS_Key",
    src_desc_map."BRACSFA",
    src_desc_map."Function"
FROM
    system."IMETA_ZTRB_MP$F_ZTBR_TA_BW" AS fact
LEFT JOIN
    dim."IMETA_BRACS_Mapping" AS bracs_map
ON
    fact."Account_Number"::text = bracs_map."GCoA"::text AND
    fact."Expense_Type"::text = bracs_map."EXPENSE FLAG"::text
LEFT JOIN
    dim."IMETA_Direct_Indirect_Mapping_New" AS direct_indirect_map
ON
    bracs_map."Account Desc" = direct_indirect_map."BRACS Account Description"
LEFT JOIN
    dim."IMETA_Region_Mapping" AS region_map
ON
    fact."Company_Code"::text = region_map."CoCd"::text
LEFT JOIN
    dim."IMETA_Entity_Mapping" AS entity_map
ON
    region_map."BRACS Entity" = entity_map."Entity"
LEFT JOIN
    dim."IMETA_Source_Description_Mapping" AS src_desc_map
ON
    ltrim(fact."BRACS_FA", '0') = src_desc_map."BRACSFA"
WHERE
    src_desc_map."BRACSFA" IS NOT NULL;

I have inherited this code, problem is it is over code, i believe. The
package is gonna run once a month and this code run is a loop. How can this
loop be running and checking data up until last day, if it only run once a
month?


NUMBER OF LOOPS FOR POSTGRESQL ETL:
SELECT
CASE
WHEN (((EXTRACT(DAY FROM
((CASE
WHEN
(SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
WHERE
WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
ELSE
(SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
WHERE
WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) + interval '1 day'
END))::timestamp - --start date
(CAST(NOW() - INTERVAL '1 day' AS DATE))::timestamp)-1) --end date
* -1)) <= 30 THEN 1
ELSE
CEIL(((EXTRACT(DAY FROM
((CASE
WHEN
(SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
WHERE
WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
ELSE
(SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
WHERE
WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM system."IMETA_ZINV_AP1_Invoice_data_TA_BW"" AS WEEK_NUMBER))
+ interval '1 day'
END))::timestamp - --start date
(CAST(NOW() - INTERVAL '1 day' AS DATE))::timestamp)-1) --end date
* -1)/30) --30 DAY INTERVALS UNLESS LESS
END
AS "Number of days"
START DATE SCRIPT FOR POSTGRESQL
SELECT
 REPLACE(
CAST(
CAST(
CASE
 WHEN
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
 ELSE
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) + interval '1 day'
 END AS DATE
) AS TEXT),'-','')  AS "Start Date"
END DATE SCRIPT OF LOOP FOR POSTGRESQL
SELECT
 REPLACE(
CAST(
CAST(
CASE
WHEN
(CASE
 WHEN
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
 ELSE
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) + interval '1 day'
 END) = '2020-07-01'
THEN
'2020-07-31'
WHEN  (CASE
 WHEN
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
 ELSE
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) + interval '1 day'
 END) + INTERVAL '30 day' < CAST(NOW() AS DATE) THEN (CASE
 WHEN
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) IS NULL THEN '2020-07-01'
 ELSE
 (SELECT DISTINCT "CALDAY" FROM
“system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS WEEK_NUMBER
 WHERE
 WEEK_NUMBER."CALDAY" = (SELECT MAX(DISTINCT "CALDAY") AS "Calendar
day" FROM “system”.”IMETA_ZACTPRIC1_Cust_Pricing_TA_BW” AS
WEEK_NUMBER)) + interval '1 day'
 END) + INTERVAL '30 day'
  ELSE
  CAST(NOW() - INTERVAL '1 day' AS DATE)
  END AS DATE
) AS TEXT),'-','') AS "End date"

The business requirement and code seem to be conflicting, am i right?

If the package runs only once a month will this code then suffice?

SELECT MIN("ZTBR_TransactionCode") AS min_transaction_code,
       MAX("ZTBR_TransactionCode") AS max_transaction_code
select count(*) FROM system."IMETA_ZTRB_MP$F_ZTBR_TA_BW";


INSERT INTO "model"."IMETA_ZTBR_BRACS_Model_TA_BW" (
    "ZTBR_TransactionCode",
    "Company_Code",
    "Posting_Period",
    "Fiscal_Year",
    "Profit_Center",
    "Account_Number",
    "Business_Process",
    "Internal_Order",
    "Amount_in_Company_Code_Currency",
    "Company_Code_Currency",
    "BRACS_FA",
    "Expense_Type",
    "BRACS_ACCT_Key",
    "CC_Direct",
    "Segment_PC",
    "CC_Master_FA",
    "Region_Secondary_Key",
    "Direct_Indirect_Secondary_Key",
    "Source_Description_Secondary_Key",
    "Entity_Secondary_Key",
    "Master_BRACS_Secondary_Key",
    "Loaddate"
)
SELECT
    "ZTBR_TransactionCode",
    "Company_Code",
    "Posting_Period",
    "Fiscal_Year",
    "Profit_Center",
    "Account_Number",
    "Business_Process",
    "Internal_Order",
    "Amount_in_Company_Code_Currency",
    "Company_Code_Currency",
    "BRACS_FA",
    "Expense_Type",
    "BRACS_ACCT_Key",
    "CC_Direct",
    "Segment_PC",
    "CC_Master_FA",
    "Region_Secondary_Key",
    "Direct_Indirect_Secondary_Key",
    "Source_Description_Secondary_Key",
    "Entity_Secondary_Key",
    "Master_BRACS_Secondary_Key",
    current_timestamp AS "Loaddate"  -- Populate Loaddate with the
current timestamp
FROM system."IMETA_ZTRB_MP$F_ZTBR_TA_BW"
WHERE DATE_TRUNC('day', "Loaddate") = DATE_TRUNC('day', current_timestamp);

Reply via email to