mainframe-segment-transform
Deployment type: Cloud Dataflow (Apache Beam)
Layer: CDP → GCS outbound
Pattern: Read cdp_generic.customer_risk_profile → write fixed-width segment files to GCS
Overview
This pipeline is the final stage of the data platform. It reads the fully-enriched
customer_risk_profile CDP table and produces fixed-width, 200-char segment files
in GCS that can be consumed by downstream mainframe systems.
cdp_generic.customer_risk_profile
│
(Dataflow / Apache Beam)
│
gs://{bucket}/segments/{run_id}/ACTIVE_APPROVED/segment-*.txt
gs://{bucket}/segments/{run_id}/DECLINED/segment-*.txt
gs://{bucket}/segments/{run_id}/REFERRED/segment-*.txt
gs://{bucket}/segments/{run_id}/PENDING/segment-*.txt
Segment File Format
Each output file contains one record per line, exactly 200 characters wide:
| Field | Width | Format |
|---|---|---|
segment_type |
4 | ACTI / DECL / REFR / PEND |
customer_id |
20 | left-justified |
account_id |
20 | left-justified |
current_balance |
15 | right-justified, 2 d.p. |
risk_score |
6 | right-justified integer |
decision_outcome |
10 | APPROVED / DECLINED / REFERRED |
facility_status |
12 | left-justified |
loan_amount |
15 | right-justified, 2 d.p. |
interest_rate |
8 | right-justified, 4 d.p. |
term_months |
4 | right-justified |
cdp_segment |
20 | left-justified |
extract_date |
8 | YYYYMMDD |
filler |
58 | space-padded reserved |
Full Pipeline Position
Mainframe files (GCS landing)
│
[data-pipeline-orchestrator] ← Airflow DAG triggered by .ok file via Pub/Sub
│
[original-data-to-bigqueryload] ← Dataflow: CSV → odp_generic.*
│
[bigquery-to-mapped-product] ← dbt: ODP → fdp_generic.*
│
[fdp-to-consumable-product] ← dbt: FDP JOIN → cdp_generic.customer_risk_profile
│
[mainframe-segment-transform] ← Dataflow: CDP → GCS fixed-width segment files
│
GCS segments bucket (for mainframe)
Running Locally
# Setup venv
./scripts/setup_deployment_venv.sh mainframe-segment-transform
source deployments/mainframe-segment-transform/venv/bin/activate
python deployments/mainframe-segment-transform/src/cdp_example/main.py \
--project joseph-antony-aruja \
--cdp_dataset cdp_generic \
--cdp_table customer_risk_profile \
--output_bucket joseph-antony-aruja-generic-dev-segments \
--run_id test_$(date +%Y%m%d_%H%M%S) \
--runner DirectRunner
Dataflow Execution
python deployments/mainframe-segment-transform/src/cdp_example/main.py \
--project joseph-antony-aruja \
--cdp_dataset cdp_generic \
--cdp_table customer_risk_profile \
--output_bucket joseph-antony-aruja-generic-dev-segments \
--run_id prod_$(date +%Y%m%d_%H%M%S) \
--runner DataflowRunner \
--region europe-west2 \
--temp_location gs://joseph-antony-aruja-generic-dev-temp/dataflow-temp
GCS Output
gs://{PROJECT_ID}-generic-{ENV}-segments/
segments/
{run_id}/
ACTIVE_APPROVED/
segment-00-of-01.txt
DECLINED/
segment-00-of-01.txt
REFERRED/
segment-00-of-01.txt
PENDING/
segment-00-of-01.txt
Metadata
Release files for gcp-pipeline-ref-segment-transform 1.0.29
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gcp_pipeline_ref_segment_transform-1.0.29.tar.gz | 7.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gcp_pipeline_ref_segment_transform-1.0.29-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.3 kB
Release files / gcp_pipeline_ref_segment_transform-1.0.29.tar.gz
| Download URL | gcp_pipeline_ref_segment_transform-1.0.29.tar.gz |
|---|---|
| Size | 7.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d0424c237a547d81faf8a0087a51ecc4609c23aa00534d54916322b3ef09580
|
|
BLAKE2b-256 checksum How to use checksums |
881dd5b94324649c7dec9f1cfb8de64cb04f40baff8b9df9d3a03f4a72859d7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / gcp_pipeline_ref_segment_transform-1.0.29-py3-none-any.whl
| Download URL | gcp_pipeline_ref_segment_transform-1.0.29-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f6cc32d89f0d3c6a3364288aa11dc42ff7d881ce9b837d4f475c10a8745f583
|
|
BLAKE2b-256 checksum How to use checksums |
3cd5f3fbffd8e6fc65b369419eb5f6d711578baff18b6a94499b88394a14dc63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|