Files
Grzegorz Michalski e3ff1618ce Przeniesienie
2026-02-03 13:32:06 +01:00
..
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00
2026-02-03 13:32:06 +01:00

MARS-826-PREHOOK: DATA_EXPORTER Package Update - Column Rename Support

Overview

Purpose: Update DATA_EXPORTER package to support renamed column in CT_ODS.A_LOAD_HISTORY
Type: Pre-Hook Deployment (Required before MARS-826)
Target Schema: CT_MRDS
Database Objects: DATA_EXPORTER package body

Background

Issue

The CT_ODS.A_LOAD_HISTORY table has column A_ETL_LOAD_SET_KEY (PRIMARY KEY), but the DATA_EXPORTER package had hardcoded references to the old column name A_WORKFLOW_HISTORY_KEY, causing JOIN failures.

Root Cause

Column name mismatch discovered during MARS-826 testing:

  • Database DDL: A_ETL_LOAD_SET_KEY (correct, as per source definition)
  • DATA_EXPORTER package: L.A_WORKFLOW_HISTORY_KEY (incorrect, outdated reference)
  • Impact: All export procedures failed with ORA-00904: "L"."A_WORKFLOW_HISTORY_KEY": invalid identifier

Solution

Updated DATA_EXPORTER.pkb to use correct column name A_ETL_LOAD_SET_KEY in all JOIN operations with CT_ODS.A_LOAD_HISTORY.

Changes Made

Package Version Update

Previous Version: 2.1.0
New Version: 2.1.1
Change Type: PATCH (Bug Fix)
Build Date: 2025-12-04 13:10:00

Modified Files

  1. DATA_EXPORTER.pkg (Package Specification)

    • Updated PACKAGE_VERSION: '2.1.0' → '2.1.1'
    • Updated PACKAGE_BUILD_DATE: '2025-12-04 13:10:00'
    • Updated VERSION_HISTORY with v2.1.1 entry
  2. DATA_EXPORTER.pkb (Package Body)

    • Updated 4 JOIN clauses in dynamic SQL
    • Updated example in documentation comment

Specific Changes

Location 1: Line ~326 (EXPORT_TABLE_DATA_BY_DATE - partition query)

-- BEFORE:
WHERE T.' || ... || ' = L.A_WORKFLOW_HISTORY_KEY

-- AFTER:
WHERE T.' || ... || ' = L.A_ETL_LOAD_SET_KEY

Location 2: Line ~340 (EXPORT_TABLE_DATA_BY_DATE - export query)

-- BEFORE:
WHERE T.' || ... || ' = L.A_WORKFLOW_HISTORY_KEY

-- AFTER:
WHERE T.' || ... || ' = L.A_ETL_LOAD_SET_KEY

Location 3: Line ~613 (EXPORT_TABLE_DATA_TO_CSV_BY_DATE - partition query)

-- BEFORE:
WHERE T.' || ... || ' = L.A_WORKFLOW_HISTORY_KEY

-- AFTER:
WHERE T.' || ... || ' = L.A_ETL_LOAD_SET_KEY

Location 4: Line ~629 (EXPORT_TABLE_DATA_TO_CSV_BY_DATE - export query)

-- BEFORE:
WHERE T.' || ... || ' = L.A_WORKFLOW_HISTORY_KEY

-- AFTER:
WHERE T.' || ... || ' = L.A_ETL_LOAD_SET_KEY

Location 5: Line ~398 (Documentation example)

-- BEFORE:
pKeyColumnName  => 'A_WORKFLOW_HISTORY_KEY',

-- AFTER:
pKeyColumnName  => 'A_ETL_LOAD_SET_KEY_FK',

Deployment

Prerequisites

  • Database connection: CT_MRDS schema
  • Required privileges: ALTER PACKAGE on CT_MRDS.DATA_EXPORTER
  • Estimated time: 1-2 minutes

Installation Steps

The master installation script performs these operations in sequence:

  1. Deploy Package Specification - Install updated DATA_EXPORTER.pkg from new_version/ (v2.1.1)
  2. Deploy Package Body - Install updated DATA_EXPORTER.pkb from new_version/ with column reference fixes
  3. Track Version - Record package version using universal tracking script (Standard)
  4. Verify Status - Check all tracked packages for untracked changes using universal verification script (Standard)

Version Folders:

  • current_version/ - Contains DATA_EXPORTER v2.1.0 (backup from MARS-846 for rollback)
  • new_version/ - Contains DATA_EXPORTER v2.1.1 (updated with A_ETL_LOAD_SET_KEY fixes)

Execution

  1. Connect to database as CT_MRDS user
  2. Execute install_mars826_prehook.sql
  3. Verify package compilation status
  4. Test export functionality

Verification

-- Check package compilation status
SELECT object_name, object_type, status 
FROM user_objects 
WHERE object_name = 'DATA_EXPORTER' 
  AND object_type = 'PACKAGE BODY';

-- Verify package version
SELECT CT_MRDS.DATA_EXPORTER.GET_VERSION() FROM DUAL;

-- Test export with new column reference
BEGIN
    CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE(
        pSchemaName => 'OU_LM',
        pTableName => 'ADHOC_ADJ_HEADER',
        pKeyColumnName => 'A_ETL_LOAD_SET_KEY_FK',
        pBucketArea => 'ARCHIVE',
        pFolderName => 'TEST_EXPORT'
    );
END;
/

Rollback

Execute rollback_mars826_prehook.sql to restore previous package version.

Dependencies

Required by MARS-826

CRITICAL: This package must be deployed BEFORE MARS-826 execution. MARS-826 export scripts depend on this updated DATA_EXPORTER package.

Database Objects

  • Table: CT_ODS.A_LOAD_HISTORY (must have column A_ETL_LOAD_SET_KEY)
  • Package: CT_MRDS.ENV_MANAGER (for error handling and logging)
  • Package: CT_MRDS.FILE_MANAGER (for bucket URI resolution)

Configuration Changes

Bucket Configuration

Note: During testing, discovered bucket configuration issue:

  • Original: ArchiveBucketName = 'archive' (bucket did not exist)
  • Fixed: ArchiveBucketName = 'history' (correct bucket name)

This configuration fix is NOT part of this MARS package but was applied directly to database:

UPDATE CT_MRDS.A_FILE_MANAGER_CONFIG 
SET CONFIG_VARIABLE_VALUE = 'history' 
WHERE CONFIG_VARIABLE = 'ArchiveBucketName';
COMMIT;

Testing Results

Test Case 1: Single Table Export

Table: OU_LM.ADHOC_ADJ_HEADER
Result: SUCCESS
Output: 2 Parquet files created with Hive-style partitioning

LM_ADHOC_ADJUSTMENTS_HEADER/PARTITION_YEAR=2025/PARTITION_MONTH=08/202508_1_*.parquet (1,433 bytes)
LM_ADHOC_ADJUSTMENTS_HEADER/PARTITION_YEAR=2025/PARTITION_MONTH=09/202509_1_*.parquet (1,432 bytes)

Test Case 2: Package Compilation

Status: VALID
Compilation Time: < 1 second
Errors: None

Impact Analysis

Affected Procedures

  1. EXPORT_TABLE_DATA_BY_DATE - Main export with Parquet partitioning
  2. EXPORT_TABLE_DATA_TO_CSV_BY_DATE - CSV export with date filtering

Tables Using A_ETL_LOAD_SET_KEY_FK

All tables in MARS-826 export scope (19 tables):

  • OU_LM: 17 tables (ADHOC_ADJ_, BALANCESHEET_, CSM_ADJ_, FORECAST_, QR_ADJ_, STANDING_FACILITY, TTS_*)
  • OU_MRR: 2 tables (IND_CURRENT_ACCOUNT, IND_OVERNIGHT_DEPOSITS)

Backward Compatibility

⚠️ BREAKING CHANGE: This update is NOT backward compatible with databases where A_LOAD_HISTORY still uses A_WORKFLOW_HISTORY_KEY column name.

Files Included

  1. README.md - This documentation file
  2. .gitignore - Git exclusions (confluence/, log/, test/, mock_data/)
  3. install_mars826_prehook.sql - Master installation script with SPOOL logging (5 steps)
  4. rollback_mars826_prehook.sql - Master rollback script (2 steps)
  5. 00_MARS_826_PREHOOK_install_DATA_EXPORTER_SPEC.sql - Deploy updated package specification
  6. 01_MARS_826_PREHOOK_install_DATA_EXPORTER_BODY.sql - Deploy updated package body
  7. 02_MARS_826_PREHOOK_verify_package.sql - Verify package compilation and test export
  8. track_package_versions.sql - Universal version tracking script (Standard)
  9. verify_packages_version.sql - Universal package verification script (Standard)
  10. 91_MARS_826_PREHOOK_rollback_DATA_EXPORTER_BODY.sql - Restore previous package body
  11. 92_MARS_826_PREHOOK_rollback_DATA_EXPORTER_SPEC.sql - Restore previous package specification
  12. current_version/ - Backup of DATA_EXPORTER v2.1.0 (from MARS-846)
  13. new_version/ - Updated DATA_EXPORTER v2.1.1 (with A_ETL_LOAD_SET_KEY fixes)

Version History

  • v2.1.1 (2025-12-04): Fixed JOIN column reference A_WORKFLOW_HISTORY_KEY → A_ETL_LOAD_SET_KEY
  • v2.1.0 (2025-10-22): Added version tracking and PARTITION_YEAR/PARTITION_MONTH support
  • v2.0.0 (2025-10-01): Separated export functionality from FILE_MANAGER package
  • MARS-826: Export CSDB historical data to HIST bucket (requires this pre-hook)

Author

Created by: Grzegorz Michalski Date: 2025-12-04
Schema: CT_MRDS