Refactor export scripts to use DATA_EXPORTER.EXPORT_TABLE_DATA procedure, update folder structure to DATA/C2D, and add file registration validation in README and validation script.
This commit is contained in:
@@ -3,8 +3,8 @@
|
|||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
-- Purpose: One-time export of historical C2D MPEC delta data from
|
-- Purpose: One-time export of historical C2D MPEC delta data from
|
||||||
-- OU_C2D operational database to DATA bucket as CSV files
|
-- OU_C2D operational database to DATA bucket as CSV files
|
||||||
-- Method: Using DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE procedure
|
-- Method: Using DATA_EXPORTER.EXPORT_TABLE_DATA procedure
|
||||||
-- Target: DATA bucket with folder structure ODS/C2D/{TABLE_NAME}
|
-- Target: DATA bucket with folder structure DATA/C2D/{TABLE_NAME}
|
||||||
-- Format: CSV files for complete historical data access
|
-- Format: CSV files for complete historical data access
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
|
|
||||||
@@ -14,8 +14,9 @@ PROMPT =========================================================================
|
|||||||
PROMPT Export Strategy:
|
PROMPT Export Strategy:
|
||||||
PROMPT - Source: OU_C2D schema tables (operational database)
|
PROMPT - Source: OU_C2D schema tables (operational database)
|
||||||
PROMPT - Target: DATA bucket as CSV files
|
PROMPT - Target: DATA bucket as CSV files
|
||||||
PROMPT - Method: DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE
|
PROMPT - Method: DATA_EXPORTER.EXPORT_TABLE_DATA
|
||||||
PROMPT - Structure: Must match ODS template tables
|
PROMPT - Structure: Must match ODS template tables
|
||||||
|
PROMPT - Registration: Files registered in A_SOURCE_FILE_RECEIVED
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
|
|
||||||
-- Log export start
|
-- Log export start
|
||||||
@@ -25,24 +26,21 @@ VALUES ('MARS-956', 'EXPORT_C2D_MPEC_DATA', 'INFO', 'Starting historical C2D MPE
|
|||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
-- TABLE 1: OU_C2D.MPEC_ADMIN -> ODS/C2D/C2D_MPEC_ADMIN
|
-- TABLE 1: OU_C2D.MPEC_ADMIN -> DATA/C2D/C2D_MPEC_ADMIN
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
|
|
||||||
PROMPT Exporting Table 1/3: OU_C2D.MPEC_ADMIN
|
PROMPT Exporting Table 1/3: OU_C2D.MPEC_ADMIN
|
||||||
PROMPT Target: mrds_data_dev/ODS/C2D/C2D_MPEC_ADMIN
|
PROMPT Target: mrds_data_dev/DATA/C2D/C2D_MPEC_ADMIN
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE(
|
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA(
|
||||||
pSchemaName => 'OU_C2D',
|
pSchemaName => 'OU_C2D',
|
||||||
pTableName => 'MPEC_ADMIN',
|
pTableName => 'MPEC_ADMIN',
|
||||||
pKeyColumnName => 'A_WORKFLOW_HISTORY_KEY', -- Adjust if different
|
pKeyColumnName => 'A_ETL_LOAD_SET_FK', -- ETL key for data lookup
|
||||||
pBucketArea => 'DATA',
|
pBucketArea => 'DATA',
|
||||||
pFolderName => 'ODS/C2D/C2D_MPEC_ADMIN',
|
pFolderName => 'DATA/C2D/C2D_MPEC_ADMIN',
|
||||||
pColumnList => NULL, -- Use all columns
|
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_ADMIN', -- Template for column order
|
||||||
pMinDate => DATE '2020-01-01', -- Full historical range
|
pRegisterExport => TRUE, -- Register files in A_SOURCE_FILE_RECEIVED
|
||||||
pMaxDate => SYSDATE, -- Up to current date
|
|
||||||
pParallelDegree => 1, -- Sequential for safety
|
|
||||||
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_ADMIN', -- Template for mapping
|
|
||||||
pCredentialName => 'DEF_CRED_ARN'
|
pCredentialName => 'DEF_CRED_ARN'
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -59,24 +57,21 @@ END;
|
|||||||
/
|
/
|
||||||
|
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
-- TABLE 2: OU_C2D.MPEC_CONTENT -> ODS/C2D/C2D_MPEC_CONTENT
|
-- TABLE 2: OU_C2D.MPEC_CONTENT -> DATA/C2D/C2D_MPEC_CONTENT
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
|
|
||||||
PROMPT Exporting Table 2/3: OU_C2D.MPEC_CONTENT
|
PROMPT Exporting Table 2/3: OU_C2D.MPEC_CONTENT
|
||||||
PROMPT Target: mrds_data_dev/ODS/C2D/C2D_MPEC_CONTENT
|
PROMPT Target: mrds_data_dev/DATA/C2D/C2D_MPEC_CONTENT
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE(
|
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA(
|
||||||
pSchemaName => 'OU_C2D',
|
pSchemaName => 'OU_C2D',
|
||||||
pTableName => 'MPEC_CONTENT',
|
pTableName => 'MPEC_CONTENT',
|
||||||
pKeyColumnName => 'A_WORKFLOW_HISTORY_KEY', -- Adjust if different
|
pKeyColumnName => 'A_ETL_LOAD_SET_FK', -- ETL key for data lookup
|
||||||
pBucketArea => 'DATA',
|
pBucketArea => 'DATA',
|
||||||
pFolderName => 'ODS/C2D/C2D_MPEC_CONTENT',
|
pFolderName => 'DATA/C2D/C2D_MPEC_CONTENT',
|
||||||
pColumnList => NULL, -- Use all columns
|
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_CONTENT', -- Template for column order
|
||||||
pMinDate => DATE '2020-01-01', -- Full historical range
|
pRegisterExport => TRUE, -- Register files in A_SOURCE_FILE_RECEIVED
|
||||||
pMaxDate => SYSDATE, -- Up to current date
|
|
||||||
pParallelDegree => 1, -- Sequential for safety
|
|
||||||
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_CONTENT', -- Template for mapping
|
|
||||||
pCredentialName => 'DEF_CRED_ARN'
|
pCredentialName => 'DEF_CRED_ARN'
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -93,24 +88,21 @@ END;
|
|||||||
/
|
/
|
||||||
|
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
-- TABLE 3: OU_C2D.MPEC_CONTENT_CRITERION -> ODS/C2D/C2D_MPEC_CONTENT_CRITERION
|
-- TABLE 3: OU_C2D.MPEC_CONTENT_CRITERION -> DATA/C2D/C2D_MPEC_CONTENT_CRITERION
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
|
|
||||||
PROMPT Exporting Table 3/3: OU_C2D.MPEC_CONTENT_CRITERION
|
PROMPT Exporting Table 3/3: OU_C2D.MPEC_CONTENT_CRITERION
|
||||||
PROMPT Target: mrds_data_dev/ODS/C2D/C2D_MPEC_CONTENT_CRITERION
|
PROMPT Target: mrds_data_dev/DATA/C2D/C2D_MPEC_CONTENT_CRITERION
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE(
|
CT_MRDS.DATA_EXPORTER.EXPORT_TABLE_DATA(
|
||||||
pSchemaName => 'OU_C2D',
|
pSchemaName => 'OU_C2D',
|
||||||
pTableName => 'MPEC_CONTENT_CRITERION',
|
pTableName => 'MPEC_CONTENT_CRITERION',
|
||||||
pKeyColumnName => 'A_WORKFLOW_HISTORY_KEY', -- Adjust if different
|
pKeyColumnName => 'A_ETL_LOAD_SET_FK', -- ETL key for data lookup
|
||||||
pBucketArea => 'DATA',
|
pBucketArea => 'DATA',
|
||||||
pFolderName => 'ODS/C2D/C2D_MPEC_CONTENT_CRITERION',
|
pFolderName => 'DATA/C2D/C2D_MPEC_CONTENT_CRITERION',
|
||||||
pColumnList => NULL, -- Use all columns
|
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_CONTENT_CRITERION', -- Template for column order
|
||||||
pMinDate => DATE '2020-01-01', -- Full historical range
|
pRegisterExport => TRUE, -- Register files in A_SOURCE_FILE_RECEIVED
|
||||||
pMaxDate => SYSDATE, -- Up to current date
|
|
||||||
pParallelDegree => 1, -- Sequential for safety
|
|
||||||
pTemplateTableName => 'CT_ET_TEMPLATES.C2D_MPEC_CONTENT_CRITERION', -- Template for mapping
|
|
||||||
pCredentialName => 'DEF_CRED_ARN'
|
pCredentialName => 'DEF_CRED_ARN'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
**Purpose**: One-time export of historical C2D MPEC delta data from operational database (OU_C2D) to DATA bucket as CSV files.
|
**Purpose**: One-time export of historical C2D MPEC delta data from operational database (OU_C2D) to DATA bucket as CSV files.
|
||||||
|
|
||||||
**Approach**: Use FILE_MANAGER export functionality EXPORT_TABLE_DATA_BY_DATE for bulk data movement.
|
**Approach**: Use DATA_EXPORTER export functionality EXPORT_TABLE_DATA for bulk data movement with file registration.
|
||||||
|
|
||||||
**Input**: Old tables in OU_C2D operational database
|
**Input**: Old tables in OU_C2D operational database
|
||||||
**Output**: CSV files in DATA bucket
|
**Output**: CSV files in DATA bucket
|
||||||
@@ -13,18 +13,19 @@
|
|||||||
## Tables to Export
|
## Tables to Export
|
||||||
|
|
||||||
| Source Table (OU_C2D) | Target Location (DATA) | Export Type | Time Dependency |
|
| Source Table (OU_C2D) | Target Location (DATA) | Export Type | Time Dependency |
|
||||||
|------------------------|-------------------------|-------------|-----------------|
|
|------------------------|-------------------------|-------------|------------------|
|
||||||
| `MPEC_ADMIN` | `mrds_data_dev/ODS/C2D/C2D_MPEC_ADMIN` | CSV to DATA | Sync with REL_02 |
|
| `MPEC_ADMIN` | `mrds_data_dev/DATA/C2D/C2D_MPEC_ADMIN` | CSV to DATA | Sync with REL_02 |
|
||||||
| `MPEC_CONTENT` | `mrds_data_dev/ODS/C2D/C2D_MPEC_CONTENT` | CSV to DATA | Sync with REL_02 |
|
| `MPEC_CONTENT` | `mrds_data_dev/DATA/C2D/C2D_MPEC_CONTENT` | CSV to DATA | Sync with REL_02 |
|
||||||
| `MPEC_CONTENT_CRITERION` | `mrds_data_dev/ODS/C2D/C2D_MPEC_CONTENT_CRITERION` | CSV to DATA | Sync with REL_02 |
|
| `MPEC_CONTENT_CRITERION` | `mrds_data_dev/DATA/C2D/C2D_MPEC_CONTENT_CRITERION` | CSV to DATA | Sync with REL_02 |
|
||||||
|
|
||||||
## Export Strategy
|
## Export Strategy
|
||||||
|
|
||||||
- **Format**: CSV files in DATA bucket
|
- **Format**: CSV files in DATA bucket
|
||||||
- **Reason**: Complete history of delta records needed for all queries
|
- **Reason**: Complete history of delta records needed for all queries
|
||||||
- **Method**: `DATA_EXPORTER.EXPORT_TABLE_DATA_BY_DATE` procedure
|
- **Method**: `DATA_EXPORTER.EXPORT_TABLE_DATA` procedure
|
||||||
- **Bucket Area**: `'DATA'`
|
- **Bucket Area**: `'DATA'`
|
||||||
- **Folder Structure**: `'ODS/C2D/{TABLE_NAME}'`
|
- **Folder Structure**: `'DATA/C2D/{TABLE_NAME}'`
|
||||||
|
- **File Registration**: Files registered in A_SOURCE_FILE_RECEIVED table
|
||||||
|
|
||||||
## Installation Steps
|
## Installation Steps
|
||||||
|
|
||||||
@@ -47,7 +48,7 @@ MARS-956/
|
|||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
- OU_C2D schema access for source tables
|
- OU_C2D schema access for source tables
|
||||||
- DATA_EXPORTER package v2.7.4+ deployed
|
- DATA_EXPORTER package v2.7.5+ deployed (with pRegisterExport support)
|
||||||
- DEF_CRED_ARN credentials configured
|
- DEF_CRED_ARN credentials configured
|
||||||
- DATA bucket accessible
|
- DATA bucket accessible
|
||||||
|
|
||||||
@@ -57,6 +58,7 @@ MARS-956/
|
|||||||
2. Verify CSV files created in DATA bucket
|
2. Verify CSV files created in DATA bucket
|
||||||
3. Validate file structure matches template tables
|
3. Validate file structure matches template tables
|
||||||
4. Confirm row counts match source tables
|
4. Confirm row counts match source tables
|
||||||
|
5. Check file registration in A_SOURCE_FILE_RECEIVED table
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
|||||||
@@ -85,24 +85,62 @@ GROUP BY owner, table_name
|
|||||||
ORDER BY table_name, owner;
|
ORDER BY table_name, owner;
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT 4. Export File Validation Commands
|
PROMPT 4. File Registration Validation
|
||||||
|
PROMPT =========================================================================
|
||||||
|
|
||||||
|
-- Check if exported files were registered in A_SOURCE_FILE_RECEIVED
|
||||||
|
PROMPT Registered export files (last 24 hours):
|
||||||
|
SELECT A_SOURCE_FILE_RECEIVED_KEY,
|
||||||
|
A_SOURCE_FILE_CONFIG_KEY,
|
||||||
|
SOURCE_FILE_NAME,
|
||||||
|
ROUND(BYTES/1024, 2) AS SIZE_KB,
|
||||||
|
PROCESSING_STATUS,
|
||||||
|
TO_CHAR(RECEPTION_DATE, 'YYYY-MM-DD HH24:MI:SS') AS REGISTERED_TIME
|
||||||
|
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
|
WHERE RECEPTION_DATE >= SYSDATE - 1 -- Last 24 hours
|
||||||
|
AND (SOURCE_FILE_NAME LIKE '%MPEC_%' OR A_SOURCE_FILE_CONFIG_KEY IN (
|
||||||
|
SELECT A_SOURCE_FILE_CONFIG_KEY
|
||||||
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
||||||
|
WHERE A_SOURCE_KEY = 'C2D' AND TABLE_ID LIKE '%MPEC%'
|
||||||
|
))
|
||||||
|
ORDER BY RECEPTION_DATE DESC;
|
||||||
|
|
||||||
|
-- Count registered files per config key
|
||||||
|
PROMPT File registration summary:
|
||||||
|
SELECT
|
||||||
|
CASE WHEN A_SOURCE_FILE_CONFIG_KEY = -1 THEN 'Default (no config)'
|
||||||
|
ELSE 'Config Key: ' || A_SOURCE_FILE_CONFIG_KEY
|
||||||
|
END AS CONFIG_INFO,
|
||||||
|
COUNT(*) AS REGISTERED_FILES
|
||||||
|
FROM CT_MRDS.A_SOURCE_FILE_RECEIVED
|
||||||
|
WHERE RECEPTION_DATE >= SYSDATE - 1 -- Last 24 hours
|
||||||
|
AND (SOURCE_FILE_NAME LIKE '%MPEC_%' OR A_SOURCE_FILE_CONFIG_KEY IN (
|
||||||
|
SELECT A_SOURCE_FILE_CONFIG_KEY
|
||||||
|
FROM CT_MRDS.A_SOURCE_FILE_CONFIG
|
||||||
|
WHERE A_SOURCE_KEY = 'C2D' AND TABLE_ID LIKE '%MPEC%'
|
||||||
|
))
|
||||||
|
GROUP BY A_SOURCE_FILE_CONFIG_KEY
|
||||||
|
ORDER BY A_SOURCE_FILE_CONFIG_KEY;
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT 5. Export File Validation Commands
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
|
|
||||||
PROMPT To validate exported CSV files, use these OCI CLI commands:
|
PROMPT To validate exported CSV files, use these OCI CLI commands:
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT # List exported files
|
PROMPT # List exported files
|
||||||
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "ODS/C2D/C2D_MPEC"
|
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "DATA/C2D/C2D_MPEC"
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT # Check file sizes
|
PROMPT # Check file sizes
|
||||||
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "ODS/C2D/C2D_MPEC_ADMIN"
|
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "DATA/C2D/C2D_MPEC_ADMIN"
|
||||||
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "ODS/C2D/C2D_MPEC_CONTENT"
|
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "DATA/C2D/C2D_MPEC_CONTENT"
|
||||||
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "ODS/C2D/C2D_MPEC_CONTENT_CRITERION"
|
PROMPT oci os object list --bucket-name mrds_data_dev --prefix "DATA/C2D/C2D_MPEC_CONTENT_CRITERION"
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT # Download sample file for validation
|
PROMPT # Download sample file for validation
|
||||||
PROMPT oci os object get --bucket-name mrds_data_dev --name "ODS/C2D/C2D_MPEC_ADMIN/filename.csv" --file sample.csv
|
PROMPT oci os object get --bucket-name mrds_data_dev --name "DATA/C2D/C2D_MPEC_ADMIN/filename.csv" --file sample.csv
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT 5. Data Quality Checks (Manual)
|
PROMPT 6. Data Quality Checks (Manual)
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
|
|
||||||
PROMPT Manual verification steps:
|
PROMPT Manual verification steps:
|
||||||
@@ -112,9 +150,10 @@ PROMPT 3. Check data formats (especially dates) match expectations
|
|||||||
PROMPT 4. Confirm row counts approximately match source tables
|
PROMPT 4. Confirm row counts approximately match source tables
|
||||||
PROMPT 5. Validate no empty files were created
|
PROMPT 5. Validate no empty files were created
|
||||||
PROMPT 6. Test loading sample data into external tables
|
PROMPT 6. Test loading sample data into external tables
|
||||||
|
PROMPT 7. Verify file registration entries in A_SOURCE_FILE_RECEIVED
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT 6. Next Steps for ODS Integration
|
PROMPT 7. Next Steps for ODS Integration
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
|
|
||||||
PROMPT After validation success:
|
PROMPT After validation success:
|
||||||
@@ -136,6 +175,7 @@ PROMPT Review the output above to confirm:
|
|||||||
PROMPT ✓ Export processes completed without errors
|
PROMPT ✓ Export processes completed without errors
|
||||||
PROMPT ✓ Source table row counts are reasonable
|
PROMPT ✓ Source table row counts are reasonable
|
||||||
PROMPT ✓ Template tables exist and have matching structure
|
PROMPT ✓ Template tables exist and have matching structure
|
||||||
|
PROMPT ✓ Exported files registered in A_SOURCE_FILE_RECEIVED table
|
||||||
PROMPT ✓ Manual file validation steps are understood
|
PROMPT ✓ Manual file validation steps are understood
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT If any issues found, check export logs and re-run specific exports if needed.
|
PROMPT If any issues found, check export logs and re-run specific exports if needed.
|
||||||
|
|||||||
Reference in New Issue
Block a user