From 9e3a9d97446b3c8b82b3660a39bf2e703b83307a Mon Sep 17 00:00:00 2001 From: Alex Zorkin Date: Tue, 14 Jan 2025 20:10:52 -0800 Subject: [PATCH] feat: clean up script extended --- etl/database/nifi-registry-primary.mv.db | Bin 94208 -> 106496 bytes etl/nifi/conf/flow.json.gz | Bin 9966 -> 10041 bytes etl/nifi/conf/flow.xml.gz | Bin 15496 -> 15664 bytes etl/nifi_scripts/clean_ups.groovy | 73 ++++++++++++++++------- 4 files changed, 53 insertions(+), 20 deletions(-) diff --git a/etl/database/nifi-registry-primary.mv.db b/etl/database/nifi-registry-primary.mv.db index f5b1bf947c3f448e892103b5cff8f494e380d00b..6494a89587bd752548dc75695e58dae6051b5dee 100644 GIT binary patch delta 2440 zcmeHJO=uid9Di?iv%6Un7o|;`jWL@xex=i7K6Yl_Oj^3VwQ4j`j5fB?H*aU!(9Q0e z-NZJBe1PalZTp}KVnm^y40f4I4}t+d4n-8J7U{v(oyX)6{YVbkJAc>`Uqi53>Qwq&*Lx+pP1G__%>pN#F|; zGuANMAd%MQhByn+-bXUfrm6XFX>R@=`q^7U5Yb%=nY4Kp2Egk9F`~v7tfC>)ujbS9 z8fm;tlvII@C>uoaK@o8PB+j}(YOBxTs5*=CSNa4DDT#_VuqmZ6=c?lU0 z7*c(#LZxHmVs(qsvz8zU0tyK7q`v`pO^jiWFiS_bwDFY-6(PRy9L?cvh8|Q_CY< z7C1W&mAQu^%Wz$@8Y=*NzqMgjgFadj;YB)E`7#k2b&W&gn0d3M^=ap$*+02<*O|HuhKh4;egIca3-N=xpM888AF(P1@)A{Y z{T<|95Iq~`U0scOJtJK?x*^A!W1rU?`#~GvBCI)#900q=0MK&)E;A9L6#(D)&btrK zk9VchUG%bWZ|r)@uaN7aHv}OrS*n5*$>GJx2+ck9f^$840mc(Q-Fb~;-}vT-_v2bV zpI2n!%w0PXqgS6Db$q8N+8z~>1@ndnf-%n&vHazp1890=eXyI`&z@MLbq)R z&aBbCrGENcA>O7m1s)|!S~rWY4GRa+_m(o9_PMZCP>`TL)n0;jt&^Z~kS6s0liNo8 z7W>;NjfO!%Na{@mBlsEV=_ZS8dU*JWuxGq`vMuH5!D3(k`EiCM`~1fKH~>b;YcKn& lOAXsIO4tfOTpO$57rkT+CEKLDda}y4ZYz1s3Uv;Xe*x9c04e|g delta 1005 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 OCKd?nzt;rXGywoEM>OdG delta 9322 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

Y#q#fn%1a-qH+&cXZ)NP@0|LY1;gg53` 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 delta 14228 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 UmrvQhh`j>c4E~+hde9L6A4&EKJpcdz diff --git a/etl/nifi_scripts/clean_ups.groovy b/etl/nifi_scripts/clean_ups.groovy index 025c46ecb..8a893064d 100644 --- a/etl/nifi_scripts/clean_ups.groovy +++ b/etl/nifi_scripts/clean_ups.groovy @@ -1,7 +1,6 @@ import java.sql.Connection import java.sql.PreparedStatement -import java.sql.ResultSet -import groovy.json.JsonSlurper +import java.sql.SQLException log.warn('**** STARTING TRANSFER UPDATE SQL ****') @@ -14,39 +13,73 @@ def updateTransferEffectiveDateSQL = """ AND update_date::date = transaction_effective_date::date; -- On the same day as transaction_effective_date """ -// Fetch connections to both source and destination databases -// Replace the UUIDs with your actual Controller Service identifiers -// For this UPDATE, only the destination database connection is required -def destinationDbcpService = context.controllerServiceLookup.getControllerService('3244bf63-0192-1000-ffff-ffffc8ec6d93') +// Cleanup queries +def cleanUpQueries = [ + """ + -- 105 + UPDATE "transaction" + SET compliance_units = -6994 + WHERE transaction_id = 1491; + """, + """ + -- 273 + UPDATE compliance_report + SET transaction_id = null + WHERE compliance_report_id = 764; + """, + """ + DELETE FROM "transaction" + WHERE transaction_id = 1920; + """ +] -// Initialize database connections +// Fetch connection to the destination database +def destinationDbcpService = context.controllerServiceLookup.getControllerService('3244bf63-0192-1000-ffff-ffffc8ec6d93') Connection destinationConn = null try { - // Get a connection from the Destination DBCP Connection Pool + // Obtain a connection from the Destination DBCP Connection Pool destinationConn = destinationDbcpService.getConnection() + destinationConn.setAutoCommit(false) // Begin transaction - // Step 1: Execute the UPDATE statement - PreparedStatement updateStmt = destinationConn.prepareStatement(updateTransferEffectiveDateSQL) - - // Execute the UPDATE statement - int rowsUpdated = updateStmt.executeUpdate() + // Step 1: Execute the UPDATE on public.transfer + try (PreparedStatement updateStmt = destinationConn.prepareStatement(updateTransferEffectiveDateSQL)) { + int rowsUpdated = updateStmt.executeUpdate() + log.info("Successfully executed UPDATE on 'public.transfer'. Rows affected: ${rowsUpdated}") + } - log.info("Successfully executed UPDATE on 'public.transfer'. Rows affected: ${rowsUpdated}") + // Step 2: Execute the cleanup queries in sequence + cleanUpQueries.each { query -> + try (PreparedStatement stmt = destinationConn.prepareStatement(query)) { + stmt.executeUpdate() + } + } + log.info("Cleanup queries executed successfully.") - // Close the UPDATE statement - updateStmt.close() + // Commit transaction + destinationConn.commit() + log.info("Transaction committed successfully.") } catch (Exception e) { - log.error('Error occurred while executing TRANSFER UPDATE SQL', e) - throw new ProcessException(e) + // Rollback transaction on error + if (destinationConn != null) { + try { + destinationConn.rollback() + log.warn("Transaction rolled back due to error.") + } catch (SQLException rollbackEx) { + log.error("Error occurred during transaction rollback", rollbackEx) + } + } + log.error('Error occurred during SQL operations', e) + throw new RuntimeException(e) } finally { // Ensure the connection is closed if (destinationConn != null) { try { destinationConn.close() - } catch (SQLException ignore) { - // Ignored + log.info("Database connection closed.") + } catch (SQLException closeEx) { + log.warn("Error occurred while closing the database connection", closeEx) } } }