financial_statement.sql (658 lines of code) (raw):

CREATE OR REPLACE TABLE `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` ( client STRING, companycode STRING, businessarea STRING, ledger STRING, profitcenter STRING, costcenter STRING, glaccount STRING, fiscalyear STRING, fiscalperiod STRING, fiscalquarter INT64, --noqa: disable=L008 {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator STRING, placcountindicator STRING, {% else %} balancesheetandplaccountindicator STRING, {% endif -%} --noqa: enable=all amount NUMERIC, currency STRING, companytext STRING, sequence INT ); CREATE OR REPLACE PROCEDURE `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.FinancialStatement`( input_startdate DATE, input_enddate DATE) OPTIONS (description = "This procedure creates the financial_statement table.") BEGIN --This procedure creates table having transaction data at fiscal year, period level --including copying missing records from one period to another. DECLARE sequence_length INT64 DEFAULT NULL; DECLARE fiscal_iteration INT64 DEFAULT 1; DECLARE company_array ARRAY <STRING(15)>; DECLARE company_length INT64 DEFAULT 1; DECLARE company_iteration INT64 DEFAULT 0; DECLARE updated_startdate DATE DEFAULT NULL; UPDATE `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` SET sequence = NULL WHERE TRUE; SET updated_startdate = ( WITH PrevFiscalYearPeriod AS ( SELECT MAX(PrevPeriod) AS PrevPeriod FROM ( SELECT Starting_Date, LAG(FiscalYearPeriod) OVER (ORDER BY FiscalYearPeriod) AS PrevPeriod FROM ( SELECT DISTINCT FiscalYearPeriod, MIN(Date) AS Starting_Date FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` WHERE mandt = '{{ mandt }}' GROUP BY FiscalYearPeriod ) ) WHERE Starting_Date <= input_startdate ), PreviousPeriodDiscovered AS ( SELECT MIN(Date) AS Date FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` WHERE FiscalYearPeriod IN ( SELECT PrevPeriod FROM PrevFiscalYearPeriod ) ) SELECT Date FROM PreviousPeriodDiscovered ); {% if sql_flavour == 'ecc' -%} CREATE OR REPLACE TEMP TABLE AccountingDocuments AS ( SELECT bkpf.MANDT, faglflexa.RBUKRS, faglflexa.RLDNR, faglflexa.RBUSA, faglflexa.RCNTR, faglflexa.RACCT, faglflexa.PRCTR, FiscalDateDimension.FiscalYear, FiscalDateDimension.FiscalPeriod, MAX(FiscalDateDimension.FiscalQuarter) AS FiscalQuarter, MAX(bseg.XBILK) AS XBILK, MAX(bseg.GVTYP) AS GVTYP, MAX(t001.PERIV) AS PERIV, MAX(t001.BUTXT) AS BUTXT, MAX(faglflexa.RWCUR) AS RWCUR, SUM(COALESCE(faglflexa.HSL * currency_decimal.CURRFIX, faglflexa.HSL)) AS HSL FROM ( SELECT MANDT, BUKRS, GJAHR, BELNR, BUZEI, XBILK, GVTYP FROM `{{ project_id_src }}.{{ dataset_cdc_processed }}.bseg` WHERE mandt = '{{ mandt }}' ) AS bseg INNER JOIN -- noqa: disable=L042 ( SELECT MANDT, BUKRS, GJAHR, BELNR FROM `{{ project_id_src }}.{{ dataset_cdc_processed }}.bkpf` WHERE mandt = '{{ mandt }}' --Ignoring the reversal documents AND XREVERSAL IS NULL ) AS bkpf ON bkpf.MANDT = bseg.MANDT AND bkpf.BUKRS = bseg.BUKRS AND bkpf.GJAHR = bseg.GJAHR AND bkpf.BELNR = bseg.BELNR INNER JOIN ( SELECT RCLNT, RBUKRS, RYEAR, BELNR, BUZEI, RWCUR, BUDAT, RLDNR, RBUSA, RCNTR, RACCT, PRCTR, HSL FROM `{{ project_id_src }}.{{ dataset_cdc_processed }}.faglflexa` WHERE rclnt = '{{ mandt }}' AND budat BETWEEN input_startdate AND input_enddate ) AS faglflexa -- noqa: enable=all ON bkpf.MANDT = faglflexa.RCLNT AND bkpf.BUKRS = faglflexa.RBUKRS AND bkpf.GJAHR = faglflexa.RYEAR AND bkpf.BELNR = faglflexa.BELNR AND bseg.BUZEI = faglflexa.BUZEI LEFT JOIN `{{ project_id_src }}.{{ dataset_cdc_processed }}.t001` AS t001 ON bseg.MANDT = t001.MANDT AND faglflexa.RBUKRS = t001.BUKRS LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.currency_decimal` AS currency_decimal ON faglflexa.RWCUR = currency_decimal.CURRKEY LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` AS FiscalDateDimension ON bseg.MANDT = FiscalDateDimension.MANDT AND t001.PERIV = FiscalDateDimension.PERIV AND faglflexa.BUDAT = FiscalDateDimension.DATE GROUP BY bkpf.MANDT, faglflexa.RBUKRS, faglflexa.RLDNR, faglflexa.RBUSA, faglflexa.RCNTR, faglflexa.RACCT, faglflexa.PRCTR, FiscalDateDimension.FiscalYear, FiscalDateDimension.FiscalPeriod ); CREATE OR REPLACE TEMP TABLE FiscalDimension AS ( SELECT DISTINCT AccountingDocuments.MANDT, AccountingDocuments.RBUKRS, FiscalDateDimension.FiscalYear, FiscalDateDimension.FiscalPeriod, FiscalDateDimension.FiscalQuarter, FiscalDateDimension.PERIV, DENSE_RANK() OVER ( PARTITION BY AccountingDocuments.RBUKRS ORDER BY FiscalDateDimension.FiscalYear ASC, FiscalDateDimension.FiscalPeriod ASC) AS sequence FROM ( SELECT DISTINCT MANDT, RBUKRS, PERIV FROM AccountingDocuments ) AS AccountingDocuments LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` AS FiscalDateDimension ON AccountingDocuments.MANDT = FiscalDateDimension.MANDT AND AccountingDocuments.PERIV = FiscalDateDimension.PERIV WHERE FiscalDateDimension.DATE BETWEEN -- Subtracting one more month from input_date to have an additional month at the beginning -- in the FiscalDimension as it is needed for the periodical load updated_startdate AND input_enddate -- noqa: L027 ); DELETE FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE (FiscalYear, FiscalPeriod) IN ( SELECT (FiscalYear, FiscalPeriod) FROM FiscalDimension -- Eliminate the lowest available period as we've selected it additionally for the -- FiscalDateDimension table only WHERE sequence <> 1 ); INSERT INTO `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` (client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, fiscalyear, fiscalperiod, fiscalquarter, balancesheetaccountindicator, placcountindicator, amount, currency, companytext, sequence) SELECT FiscalDimension.MANDT, FiscalDimension.RBUKRS, AccountingDocuments.RBUSA, AccountingDocuments.RLDNR, AccountingDocuments.PRCTR, AccountingDocuments.RCNTR, AccountingDocuments.RACCT, FiscalDimension.FiscalYear, FiscalDimension.FiscalPeriod, FiscalDimension.FiscalQuarter, AccountingDocuments.XBILK, AccountingDocuments.GVTYP, COALESCE(AccountingDocuments.HSL, 0), AccountingDocuments.RWCUR, AccountingDocuments.BUTXT, FiscalDimension.sequence FROM FiscalDimension LEFT JOIN AccountingDocuments ON FiscalDimension.MANDT = AccountingDocuments.MANDT AND FiscalDimension.RBUKRS = AccountingDocuments.RBUKRS AND FiscalDimension.FiscalYear = AccountingDocuments.FiscalYear AND FiscalDimension.FiscalPeriod = AccountingDocuments.FiscalPeriod WHERE sequence > 1; SET company_array = ARRAY(SELECT DISTINCT RBUKRS FROM FiscalDimension ORDER BY RBUKRS); {% else -%} CREATE OR REPLACE TEMP TABLE AccountingDocuments AS ( SELECT acdoca.RCLNT, acdoca.RBUKRS, acdoca.RLDNR, acdoca.RBUSA, acdoca.RCNTR, acdoca.RACCT, acdoca.PRCTR, FiscalDateDimension.FiscalYear, FiscalDateDimension.FiscalPeriod, MAX(FiscalDateDimension.FiscalQuarter) AS FiscalQuarter, MAX(acdoca.GLACCOUNT_TYPE) AS GLACCOUNT_TYPE, MAX(t001.PERIV) AS PERIV, MAX(t001.BUTXT) AS BUTXT, MAX(acdoca.RHCUR) AS RHCUR, SUM(COALESCE(acdoca.HSL * currency_decimal.CURRFIX, acdoca.HSL)) AS HSL FROM `{{ project_id_src }}.{{ dataset_cdc_processed }}.acdoca` AS acdoca LEFT JOIN `{{ project_id_src }}.{{ dataset_cdc_processed }}.t001` AS t001 ON acdoca.RCLNT = t001.MANDT AND acdoca.RBUKRS = t001.BUKRS LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.currency_decimal` AS currency_decimal ON acdoca.RHCUR = currency_decimal.CURRKEY LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` AS FiscalDateDimension ON acdoca.RCLNT = FiscalDateDimension.MANDT AND t001.PERIV = FiscalDateDimension.PERIV AND acdoca.BUDAT = FiscalDateDimension.DATE WHERE acdoca.RCLNT = '{{ mandt }}' --Ignoring the reversal documents AND acdoca.XTRUEREV IS NULL --- Ensuring we only get records for PL and BalanceSheet AND acdoca.GLACCOUNT_TYPE IN ('X','P','N') GROUP BY RCLNT,RBUKRS,RLDNR,RBUSA,RCNTR,RACCT,PRCTR,FiscalYear,FiscalPeriod ); CREATE OR REPLACE TEMP TABLE FiscalDimension AS ( SELECT DISTINCT AccountingDocuments.RCLNT, AccountingDocuments.RBUKRS, FiscalDateDimension.FiscalYear, FiscalDateDimension.FiscalPeriod, FiscalDateDimension.FiscalQuarter, FiscalDateDimension.PERIV, DENSE_RANK() OVER ( PARTITION BY AccountingDocuments.RBUKRS ORDER BY FiscalDateDimension.FiscalYear ASC, FiscalDateDimension.FiscalPeriod ASC) AS sequence FROM ( SELECT DISTINCT RCLNT, RBUKRS, PERIV FROM AccountingDocuments ) AS AccountingDocuments LEFT JOIN `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` AS FiscalDateDimension ON AccountingDocuments.RCLNT = FiscalDateDimension.MANDT AND AccountingDocuments.PERIV = FiscalDateDimension.PERIV WHERE FiscalDateDimension.DATE BETWEEN -- Subtracting one more month from input_date to have an additional month at the beginning -- in the FiscalDimension as it is needed for the periodical load updated_startdate AND input_enddate -- noqa: L027 ); DELETE FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE (FiscalYear, FiscalPeriod) IN ( SELECT (FiscalYear, FiscalPeriod) FROM FiscalDimension -- Eliminate the lowest available period as we've selected it additionally for the -- FiscalDateDimension table only WHERE sequence <> 1 ); INSERT INTO `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` (client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, fiscalyear, fiscalperiod, fiscalquarter, balancesheetandplaccountindicator, amount, currency, companytext, sequence) SELECT FiscalDimension.RCLNT, FiscalDimension.RBUKRS, AccountingDocuments.RBUSA, AccountingDocuments.RLDNR, AccountingDocuments.PRCTR, AccountingDocuments.RCNTR, AccountingDocuments.RACCT, FiscalDimension.FiscalYear, FiscalDimension.FiscalPeriod, FiscalDimension.FiscalQuarter, AccountingDocuments.GLACCOUNT_TYPE, COALESCE(AccountingDocuments.HSL, 0), AccountingDocuments.RHCUR, AccountingDocuments.BUTXT, FiscalDimension.sequence FROM FiscalDimension LEFT JOIN AccountingDocuments ON FiscalDimension.RCLNT = AccountingDocuments.RCLNT AND FiscalDimension.RBUKRS = AccountingDocuments.RBUKRS AND FiscalDimension.FiscalYear = AccountingDocuments.FiscalYear AND FiscalDimension.FiscalPeriod = AccountingDocuments.FiscalPeriod WHERE sequence > 1; SET company_array = ARRAY(SELECT DISTINCT RBUKRS FROM FiscalDimension ORDER BY RBUKRS); {% endif -%} SET company_length = ARRAY_LENGTH(company_array); WHILE(company_iteration < company_length) DO UPDATE `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` SET sequence = ( SELECT DISTINCT MIN(sequence)-1 FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE companycode = company_array[company_iteration] ) WHERE CONCAT(FiscalYear,FiscalPeriod) IN ( SELECT DISTINCT FiscalYearperiod FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.fiscal_date_dim` AS FiscalDateDim INNER JOIN ( SELECT PERIV FROM FiscalDimension WHERE RBUKRS = company_array[company_iteration] ) AS FiscalDimension ON FiscalDateDim.PERIV = FiscalDimension.PERIV WHERE DATE = updated_startdate ) AND companycode = company_array[company_iteration] AND sequence IS NULL; INSERT INTO `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` (client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, fiscalyear, fiscalperiod, fiscalquarter, --noqa: disable=L008 {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator, placcountindicator, {% else -%} balancesheetandplaccountindicator, {% endif -%} amount, currency, companytext, sequence) --noqa: enable=all SELECT * FROM ( SELECT client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, lkp.FiscalYear AS fiscalyear, lkp.FiscalPeriod AS fiscalperiod, lkp.FiscalQuarter AS fiscalquarter, {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator, placcountindicator, {% else -%} balancesheetandplaccountindicator, {% endif -%} amount, currency, companytext, resultant_rec.sequence FROM ( SELECT PreviousPeriod.client, PreviousPeriod.companycode, PreviousPeriod.businessarea, PreviousPeriod.ledger, PreviousPeriod.profitcenter, PreviousPeriod.costcenter, PreviousPeriod.glaccount, CAST(PreviousPeriod.fiscalyear AS INT64) AS fiscalyear, CAST(PreviousPeriod.fiscalperiod AS INT64) AS fiscalperiod, PreviousPeriod.fiscalquarter, {% if sql_flavour == 'ecc' -%} PreviousPeriod.balancesheetaccountindicator, PreviousPeriod.placcountindicator, {% else -%} PreviousPeriod.balancesheetandplaccountindicator, {% endif -%} 0 AS amount, PreviousPeriod.currency, PreviousPeriod.companytext, PreviousPeriod.sequence+1 AS sequence, CONCAT(PreviousPeriod.glaccount, COALESCE(PreviousPeriod.profitcenter, ''), PreviousPeriod.companycode, COALESCE(PreviousPeriod.businessarea, ''), COALESCE(PreviousPeriod.costcenter, ''), COALESCE(PreviousPeriod.ledger,'')) AS uniquePrevcombination, CONCAT(CurrentPeriod.glaccount, COALESCE(CurrentPeriod.profitcenter, ''), CurrentPeriod.companycode, COALESCE(CurrentPeriod.businessarea,''), COALESCE(CurrentPeriod.costcenter, ''), COALESCE(CurrentPeriod.ledger, '')) AS uniqueCurrcombination FROM ( WITH EXISTING_PERIODS AS ( WITH EXISTING_TRANSACTIONS AS ( SELECT DISTINCT fiscalperiod, fiscalyear, client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator, placcountindicator, {% else -%} balancesheetandplaccountindicator, {% endif -%} amount, currency, companytext FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE companycode = company_array[company_iteration] ), ALL_PERIODS AS ( SELECT FiscalDimension.* FROM FiscalDimension INNER JOIN -- Exclude the transactions having no records for a period for a company ( SELECT DISTINCT companycode, fiscalperiod, fiscalyear FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` ) AS FinStatement ON FiscalDimension.RBUKRS = FinStatement.companycode AND FiscalDimension.FiscalYear = FinStatement.fiscalyear AND FiscalDimension.FiscalPeriod = FinStatement.fiscalperiod WHERE FiscalDimension.RBUKRS = company_array[company_iteration] ) SELECT ALL_PERIODS.sequence, ALL_PERIODS.FiscalYear, ALL_PERIODS.FiscalPeriod, ALL_PERIODS.FiscalQuarter, EXISTING_TRANSACTIONS.client, EXISTING_TRANSACTIONS.companycode, EXISTING_TRANSACTIONS.businessarea, EXISTING_TRANSACTIONS.ledger, EXISTING_TRANSACTIONS.profitcenter, EXISTING_TRANSACTIONS.costcenter, EXISTING_TRANSACTIONS.glaccount, {% if sql_flavour == 'ecc' -%} EXISTING_TRANSACTIONS.balancesheetaccountindicator, EXISTING_TRANSACTIONS.placcountindicator, {% else -%} EXISTING_TRANSACTIONS.balancesheetandplaccountindicator, {% endif -%} EXISTING_TRANSACTIONS.amount, EXISTING_TRANSACTIONS.currency, EXISTING_TRANSACTIONS.companytext FROM EXISTING_TRANSACTIONS INNER JOIN ALL_PERIODS ON EXISTING_TRANSACTIONS.companycode = ALL_PERIODS.RBUKRS AND EXISTING_TRANSACTIONS.FiscalYear = ALL_PERIODS.fiscalyear AND EXISTING_TRANSACTIONS.FiscalPeriod = ALL_PERIODS.fiscalperiod ), MAX_PERIOD AS ( WITH EXISTING_TRANSACTIONS AS ( -- Rank all the records to find out the maximum period in the existing data SELECT * FROM ( SELECT client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator, placcountindicator, {% else -%} balancesheetandplaccountindicator, {% endif -%} currency, companytext, amount, fiscalyear, fiscalperiod, RANK() OVER ( PARTITION BY glaccount, businessarea, companycode, profitcenter, costcenter, ledger ORDER BY fiscalyear DESC, fiscalperiod DESC ) AS LATEST_PERIOD FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE companycode=company_array[company_iteration] GROUP BY client, companycode, businessarea, ledger, profitcenter, costcenter, glaccount, {% if sql_flavour == 'ecc' -%} balancesheetaccountindicator, placcountindicator, {% else -%} balancesheetandplaccountindicator, {% endif -%} currency, companytext, amount, fiscalyear, fiscalperiod ) WHERE LATEST_PERIOD = 1 ), ALL_PERIODS AS ( -- Find the maximum period as per the FinStatement table SELECT * FROM ( SELECT FinDimension.* , RANK() OVER ( PARTITION BY RBUKRS ORDER BY sequence DESC ) AS LATEST_PERIOD FROM FiscalDimension AS FinDimension INNER JOIN ( SELECT DISTINCT companycode, fiscalperiod, fiscalyear FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` ) AS FinStatement ON FinDimension.RBUKRS = FinStatement.companycode AND FinDimension.FiscalYear = FinStatement.fiscalyear AND FinDimension.FiscalPeriod = FinStatement.fiscalperiod WHERE FinDimension.RBUKRS = company_array[company_iteration] ORDER BY FinDimension.FiscalYear, FinDimension.FiscalPeriod ) WHERE LATEST_PERIOD = 1 ) SELECT -- Select the record for maximum period possible as per company's other transations ALL_PERIODS.sequence, ALL_PERIODS.FiscalYear, ALL_PERIODS.FiscalPeriod, ALL_PERIODS.FiscalQuarter, EXISTING_TRANSACTIONS.client, EXISTING_TRANSACTIONS.companycode, EXISTING_TRANSACTIONS.businessarea, EXISTING_TRANSACTIONS.ledger, EXISTING_TRANSACTIONS.profitcenter, EXISTING_TRANSACTIONS.costcenter, EXISTING_TRANSACTIONS.glaccount, {% if sql_flavour == 'ecc' -%} EXISTING_TRANSACTIONS.balancesheetaccountindicator, EXISTING_TRANSACTIONS.placcountindicator, {% else -%} EXISTING_TRANSACTIONS.balancesheetandplaccountindicator, {% endif -%} -- If the latest period is same as the max period, use original amount so the -- record gets eliminated in a Union Distinct operation, else use zero IF(ALL_PERIODS.FiscalYear = EXISTING_TRANSACTIONS.fiscalyear AND ALL_PERIODS.FiscalPeriod = EXISTING_TRANSACTIONS.FiscalPeriod, EXISTING_TRANSACTIONS.amount, 0 ) AS amount, EXISTING_TRANSACTIONS.currency, EXISTING_TRANSACTIONS.companytext FROM EXISTING_TRANSACTIONS CROSS JOIN ALL_PERIODS ), MERGED_PERIODS AS ( SELECT * FROM EXISTING_PERIODS UNION DISTINCT SELECT * FROM MAX_PERIOD ), GEN_REC AS ( SELECT COALESCE( LEAD(sequence) OVER ( PARTITION BY glaccount, profitcenter, companycode, businessarea, costcenter, ledger ORDER BY sequence ) - sequence -1, 0 ) AS missing_periods, * FROM MERGED_PERIODS ), MASTER_SEQ AS ( SELECT * FROM FiscalDimension WHERE RBUKRS=company_array[company_iteration] ), FABRICATED_RECORDS AS ( SELECT -- Populate the column values of newly generated records like -- fiscalyear, fiscalperiod and zero amount values GEN_REC.* EXCEPT(sequence, fiscalyear, fiscalperiod, fiscalquarter, amount), IF (MASTER_SEQ.sequence - GEN_REC.sequence = 0, GEN_REC.amount, 0) AS amount, MASTER_SEQ.FiscalYear AS fiscalyear, MASTER_SEQ.FiscalPeriod AS fiscalperiod, MASTER_SEQ.FiscalQuarter AS fiscalquarter, MASTER_SEQ.sequence AS sequence FROM GEN_REC INNER JOIN MASTER_SEQ ON --Join for the range of missing records to create rows of missing records MASTER_SEQ.sequence BETWEEN GEN_REC.sequence AND (GEN_REC.sequence + GEN_REC.missing_periods) ) SELECT * FROM FABRICATED_RECORDS WHERE -- Eliminate the records with unique combination null CONCAT(glaccount, COALESCE(profitcenter,''), companycode, COALESCE(businessarea,''), COALESCE(costcenter,''), COALESCE(ledger,'')) IS NOT NULL ) AS PreviousPeriod LEFT JOIN ( -- Compare the succeeding and preceding months to determine if the combination exists -- in the succeeding month SELECT * FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE companycode = company_array[company_iteration] ) AS CurrentPeriod ON PreviousPeriod.sequence = CurrentPeriod.sequence - 1 AND CONCAT(PreviousPeriod.glaccount, COALESCE(PreviousPeriod.profitcenter,''), PreviousPeriod.companycode, COALESCE(PreviousPeriod.businessarea,''), COALESCE(PreviousPeriod.costcenter,''), COALESCE(PreviousPeriod.ledger,'')) = CONCAT(CurrentPeriod.glaccount, COALESCE(CurrentPeriod.profitcenter,''), CurrentPeriod.companycode, COALESCE(CurrentPeriod.businessarea,''), COALESCE(CurrentPeriod.costcenter,''), COALESCE(CurrentPeriod.ledger,'')) ) AS resultant_rec LEFT JOIN ( -- Lookup the sequence of final selected records in FiscalDimension to eliminate -- 1. The sequences not in FiscalDimension (these are borderline cases having last month) -- 2. Eliminate the records where uniqueCurrcombination is null, this would have been set -- in the last left join -- 3. Eliminate the records where uniquePrevcombination is not null, this again is set as a -- result of last left join SELECT * FROM FiscalDimension WHERE RBUKRS=company_array[company_iteration] ) AS lkp ON resultant_rec.sequence = lkp.sequence WHERE uniqueCurrcombination IS NULL AND uniquePrevcombination IS NOT NULL AND resultant_rec.sequence IS NOT NULL ) WHERE fiscalperiod IS NOT NULL; DELETE FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE (fiscalyear, fiscalperiod) NOT IN ( SELECT (fiscalyear, fiscalperiod) FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE companycode = company_array[company_iteration] AND amount <> 0 GROUP BY fiscalyear, fiscalperiod ) AND companycode = company_array[company_iteration]; SET fiscal_iteration = 1; SET company_iteration = company_iteration + 1; END WHILE; DELETE FROM `{{ project_id_tgt }}.{{ dataset_reporting_tgt }}.financial_statement` WHERE glaccount IS NULL; END;