{"id":8045,"date":"2026-09-17T10:15:10","date_gmt":"2026-09-17T10:15:10","guid":{"rendered":"https:\/\/prwatech.in\/blog\/?p=8045"},"modified":"2026-09-19T15:19:11","modified_gmt":"2026-09-19T15:19:11","slug":"etl-processing-on-google-cloud-using-dataflow-and-big-query","status":"publish","type":"post","link":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/","title":{"rendered":"ETL Processing on Google Cloud Using Dataflow and Big Query"},"content":{"rendered":"\r\n<h1>ETL Processing With Dataflow and BigQuery<\/h1>\r\n<p class=\"wp-block-paragraph\"><strong><b>Dataflow<\/b><\/strong>\u00a0is Google Cloud&#8217;s managed service for running Apache Beam pipelines, code that reads data, transforms it, and writes it somewhere else, without you having to provision or manage the machines that actually do the work. You submit a pipeline, Dataflow spins up however many workers it needs, runs it, and shuts them down again once it finishes.<\/p>\r\n<p>Pairing it with BigQuery is a common ETL pattern for a specific reason. BigQuery is excellent at querying data once it is already clean and structured, but not every transformation is easy to express as SQL, and raw source data is often messy before it gets anywhere near a table. Dataflow handles that in between step in Python, reshaping and enriching the data, then lands the result directly in BigQuery, ready to query.<\/p>\r\n<p>This builds that pattern in three concrete stages, ingesting a raw CSV file, transforming it, then enriching it further, with each stage&#8217;s output landing in BigQuery before the next one runs.<\/p>\r\n<h2>Step by Step Process of ETL on Google Cloud With Dataflow and BigQuery<\/h2>\r\n<h3>Step One: Activate Cloud Shell<\/h3>\r\n<p>Open the console and click Activate Cloud Shell.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8046\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg\" alt=\"\" width=\"459\" height=\"195\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg 506w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8-300x127.jpg 300w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><\/figure>\r\n<p>&nbsp;<\/p>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Two: Confirm and Set Your Project<\/h3>\r\n<p class=\"wp-block-paragraph\">gcloud config list project<br \/>gcloud config set project my-demo-project-306417<\/p>\r\n<p>The first command lists your current project. The second sets the active project, replacing the example ID with your own.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8047\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/2-8.jpg\" alt=\"\" width=\"1023\" height=\"247\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/2-8.jpg 991w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/2-8-300x73.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/2-8-768x186.jpg 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Three: Confirm the Compute Service Account<\/h3>\r\n<p class=\"wp-block-paragraph\">Open the menu, then IAM and Admin.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8048\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/3-8.jpg\" alt=\"\" width=\"445\" height=\"360\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/3-8.jpg 559w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/3-8-300x243.jpg 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Confirm that the default compute Service Account\u00a0is present and has the\u00a0editor\u00a0role assigned.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">{project-number}-compute@developer.gserviceaccount.com<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8049\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/4-7.jpg\" alt=\"\" width=\"980\" height=\"329\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/4-7.jpg 978w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/4-7-300x101.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/4-7-768x258.jpg 768w\" sizes=\"auto, (max-width: 980px) 100vw, 980px\" \/><\/figure>\r\n<h3>Step Four: Find Your Project Number<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">To check the project number, Go to Menu &gt; Home &gt; Dashboard<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8050\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/5-4.jpg\" alt=\"\" width=\"410\" height=\"193\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/5-4.jpg 537w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/5-4-300x141.jpg 300w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The project number is shown under Project Info.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8052\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/6-5.jpg\" alt=\"\" width=\"440\" height=\"299\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/6-5.jpg 592w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/6-5-300x204.jpg 300w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Five: Copy the Sample Pipeline Code<\/h3>\r\n<p class=\"wp-block-paragraph\">gsutil -m cp -R gs:\/\/spls\/gsp290\/dataflow-python-examples .<\/p>\r\n<p>This copies the sample Dataflow Python code from Google Cloud&#8217;s own training bucket into your Cloud Shell home directory.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8053\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/7-4-1024x154.jpg\" alt=\"\" width=\"1451\" height=\"219\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/7-4-1024x154.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/7-4-300x45.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/7-4-768x116.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/7-4.jpg 1097w\" sizes=\"auto, (max-width: 1451px) 100vw, 1451px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Six: Set Your Project as an Environment Variable<\/h3>\r\n<p class=\"wp-block-paragraph\">export PROJECT=YOUR-PROJECT-ID<br \/>gcloud config set project $PROJECT<\/p>\r\n<p>Replace YOUR-PROJECT-ID with your actual project ID. Do not change PROJECT itself once it is set, later commands rely on that exact variable name.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8054\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/8-2.jpg\" alt=\"\" width=\"1451\" height=\"112\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/8-2.jpg 886w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/8-2-300x23.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/8-2-768x60.jpg 768w\" sizes=\"auto, (max-width: 1451px) 100vw, 1451px\" \/><\/figure>\r\n<h3>Step Seven: Create a Bucket<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0gsutil mb -c regional -l us-central1 gs:\/\/$PROJECT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #To create new Bucket<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8055\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/9-2.jpg\" alt=\"\" width=\"1428\" height=\"98\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/9-2.jpg 1001w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/9-2-300x20.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/9-2-768x52.jpg 768w\" sizes=\"auto, (max-width: 1428px) 100vw, 1428px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Eight: Copy Sample Data Into the Bucket<\/h3>\r\n<p class=\"wp-block-paragraph\">gsutil cp gs:\/\/spls\/gsp290\/data_files\/usa_names.csv gs:\/\/$PROJECT\/data_files\/<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8056\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/10-2-1024x65.jpg\" alt=\"\" width=\"1450\" height=\"91\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/10-2-1024x65.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/10-2-300x19.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/10-2-768x49.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/10-2.jpg 1270w\" sizes=\"auto, (max-width: 1450px) 100vw, 1450px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Nine: Create a BigQuery Dataset<\/h3>\r\n<p class=\"wp-block-paragraph\">bq mk lake<\/p>\r\n<p>This creates a dataset named lake, which the pipeline will load results into.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8057\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/12-1.jpg\" alt=\"\" width=\"1092\" height=\"136\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/12-1.jpg 624w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/12-1-300x38.jpg 300w\" sizes=\"auto, (max-width: 1092px) 100vw, 1092px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Ten: Set Up a Python Virtual Environment<\/h3>\r\n<p class=\"wp-block-paragraph\">cd dataflow-python-examples\/<br \/>python3 -m venv venv<br \/>source venv\/bin\/activate<br \/>pip install &#8220;apache-beam[gcp]&#8221;<\/p>\r\n<p>Current Cloud Shell images include Python&#8217;s own venv module, so a plain python3 -m venv works without needing to separately install virtualenv or use sudo with pip, which current guidance advises against. Installing apache-beam without a version pin gets you the current supported release, rather than a six year old one that Google&#8217;s own documentation no longer recommends.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8058\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/15-1-1024x215.jpg\" alt=\"\" width=\"1207\" height=\"252\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/15-1-1024x215.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/15-1-300x63.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/15-1-768x161.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/15-1.jpg 1031w\" sizes=\"auto, (max-width: 1207px) 100vw, 1207px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0 \u00a0virtualenv -p python3 venv\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #Creating Virtual Environement<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8059\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1-1024x100.jpg\" alt=\"\" width=\"1451\" height=\"141\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1-1024x100.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1-300x29.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1-768x75.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1-1200x117.jpg 1200w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/16-1.jpg 1444w\" sizes=\"auto, (max-width: 1451px) 100vw, 1451px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0source venv\/bin\/activate\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #Activating Virtual Environment<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0 pip install apache-beam[gcp]==2.24.0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 #Installing Apache-beam<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8060\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/17-1-1024x148.jpg\" alt=\"\" width=\"1348\" height=\"193\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/17-1-1024x148.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/17-1-300x43.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/17-1-768x111.jpg 768w\" sizes=\"auto, (max-width: 1348px) 100vw, 1348px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Eleven: Open the Cloud Shell Editor<\/h3>\r\n<p class=\"wp-block-paragraph\">In the Cloud Shell window, click Open Editor.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"526\" height=\"72\" class=\"wp-image-8061\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/ed.jpg\" alt=\"\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/ed.jpg 526w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/ed-300x41.jpg 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Twelve: Review the Sample Code<\/h3>\r\n<p class=\"wp-block-paragraph\">The dataflow-python-examples folder appears in the workspace. Take a moment to look through the Python files inside dataflow_python_examples before running anything.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8063\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/14-2.jpg\" alt=\"\" width=\"408\" height=\"417\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/14-2.jpg 471w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/14-2-293x300.jpg 293w\" sizes=\"auto, (max-width: 408px) 100vw, 408px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Thirteen: Run the Data Ingestion Pipeline<\/h3>\r\n<p class=\"wp-block-paragraph\">python dataflow_python_examples\/data_ingestion.py \\<br \/>&#8211;project=$PROJECT \\<br \/>&#8211;region=us-central1 \\<br \/>&#8211;runner=DataflowRunner \\<br \/>&#8211;staging_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;temp_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;input=gs:\/\/$PROJECT\/data_files\/usa_names.csv \\<br \/>&#8211;save_main_session<\/p>\r\n<p>This runs a pipeline that provisions its own workers, does the work, then shuts the workers down when finished. It takes a few minutes.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8065\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/18-1-1024x114.jpg\" alt=\"\" width=\"1451\" height=\"160\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/18-1-1024x114.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/18-1-300x34.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/18-1-768x86.jpg 768w\" sizes=\"auto, (max-width: 1451px) 100vw, 1451px\" \/><\/figure>\r\n<h3>Step Fourteen: Check the Job Status<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open the console and click Menu &gt; Dataflow &gt; Jobs<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8066\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/19-1.jpg\" alt=\"\" width=\"349\" height=\"269\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/19-1.jpg 486w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/19-1-300x231.jpg 300w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The job shows Running until it finishes, then Succeeded.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8067\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/20.jpg\" alt=\"\" width=\"983\" height=\"199\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/20.jpg 1015w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/20-300x61.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/20-768x155.jpg 768w\" sizes=\"auto, (max-width: 983px) 100vw, 983px\" \/><\/figure>\r\n<h3>Step Fifteen: Confirm the Table in BigQuery<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0Big Query &gt; SQL Workspace<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8068\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/21.jpg\" alt=\"\" width=\"377\" height=\"392\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/21.jpg 531w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/21-289x300.jpg 289w\" sizes=\"auto, (max-width: 377px) 100vw, 377px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The usa_names table now appears under the lake dataset.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8069\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/22.jpg\" alt=\"\" width=\"474\" height=\"308\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/22.jpg 790w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/22-300x195.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/22-768x500.jpg 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Sixteen: Run the Data Transformation Pipeline<\/h3>\r\n<p class=\"wp-block-paragraph\">python dataflow_python_examples\/data_transformation.py \\<br \/>&#8211;project=$PROJECT \\<br \/>&#8211;region=us-central1 \\<br \/>&#8211;runner=DataflowRunner \\<br \/>&#8211;staging_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;temp_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;input=gs:\/\/$PROJECT\/data_files\/head_usa_names.csv \\<br \/>&#8211;save_main_session<\/p>\r\n<p>Same pattern as before, this pipeline provisions workers, transforms the data, and shuts down when done.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8070\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/23-1024x168.jpg\" alt=\"\" width=\"1139\" height=\"187\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/23-1024x168.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/23-300x49.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/23-768x126.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/23.jpg 1187w\" sizes=\"auto, (max-width: 1139px) 100vw, 1139px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h2>Step Seventeen: Edit the Data Enrichment Script<\/h2>\r\n<p class=\"wp-block-paragraph\">In the Cloud Shell editor, open dataflow-python-examples, then dataflow_python_examples, then data_enrichment.py. Find this line, around line 83:<\/p>\r\n<p>values = [x.decode(&#8216;utf8&#8217;) for x in csv_row]<\/p>\r\n<p>Replace it with:<\/p>\r\n<p>values = [x for x in csv_row]<\/p>\r\n<p>This removes an old Python 2 style decode call that is not needed under Python 3, and lets the pipeline actually populate BigQuery. If you open this file and the line already looks like the replacement, the sample repository has already been updated upstream, and you can skip this step.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"408\" class=\"wp-image-8071\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25-1024x408.jpg\" alt=\"\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25-1024x408.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25-300x119.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25-768x306.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25-1200x478.jpg 1200w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/25.jpg 1261w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"416\" class=\"wp-image-8072\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26-1024x416.jpg\" alt=\"\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26-1024x416.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26-300x122.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26-768x312.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26-1200x488.jpg 1200w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/26.jpg 1245w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<h3>Step Eighteen: Run the Data Enrichment Pipeline<\/h3>\r\n<p class=\"wp-block-paragraph\">python dataflow_python_examples\/data_enrichment.py \\<br \/>&#8211;project=$PROJECT \\<br \/>&#8211;region=us-central1 \\<br \/>&#8211;runner=DataflowRunner \\<br \/>&#8211;staging_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;temp_location=gs:\/\/$PROJECT\/test \\<br \/>&#8211;input=gs:\/\/$PROJECT\/data_files\/head_usa_names.csv \\<br \/>&#8211;save_main_session<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8073\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/27-1024x123.jpg\" alt=\"\" width=\"1283\" height=\"153\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/27-1024x123.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/27-300x36.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/27-768x92.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/27.jpg 1174w\" sizes=\"auto, (max-width: 1283px) 100vw, 1283px\" \/><\/figure>\r\n<h3>Step Nineteen: Confirm the Final Result<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Open Menu &gt; Big Query &gt; SQL Workspace<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">It will show the populated dataset in lake.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8074\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28.jpg\" alt=\"\" width=\"416\" height=\"274\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28.jpg 731w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28-300x198.jpg 300w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/figure>\r\n<h3>Step Twenty: Review the Pipeline Graph<\/h3>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u00a0Dataflow &gt; Jobs.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8075\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28z.jpg\" alt=\"\" width=\"268\" height=\"236\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28z.jpg 472w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28z-300x264.jpg 300w\" sizes=\"auto, (max-width: 268px) 100vw, 268px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Click on the job which you have done.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8076\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28y.jpg\" alt=\"\" width=\"678\" height=\"175\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28y.jpg 869w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28y-300x78.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/28y-768x199.jpg 768w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">It will show the Data Flow pipeline of the work.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8077\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/29-1024x843.jpg\" alt=\"\" width=\"687\" height=\"565\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/29-1024x843.jpg 1024w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/29-300x247.jpg 300w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/29-768x632.jpg 768w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/29.jpg 1075w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><\/figure>\r\n<\/div>\r\n<h2>Common Mistakes to Avoid<\/h2>\r\n<ul>\r\n<li>Copying commands with en dashes instead of real double hyphens. Retype every flag if a Dataflow command fails immediately with an unrecognized argument error.<\/li>\r\n<li>Pinning apache-beam to an old specific version out of habit. Install without a version pin unless you have a specific, current reason to fix one, so you get a version Google actually still supports.<\/li>\r\n<li>Forgetting to reactivate the virtual environment in a new Cloud Shell session. Cloud Shell does not keep it active between sessions, so run source venv\/bin\/activate again each time you come back to this.<\/li>\r\n<li>Changing the PROJECT environment variable name in later commands. Every command after Step Six depends on that exact variable name to find your project, bucket, and files.<\/li>\r\n<\/ul>\r\n<p>That covers building a three stage ETL pipeline with Dataflow and loading the result into BigQuery. To go further, explore <a href=\"https:\/\/prwatech.in\/gcp-training-institutes-in-pune\/\"><strong><b>Prwatech&#8217;s Google Cloud training<\/b><\/strong><\/a>\u00a0program, which includes placement assistance.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>ETL Processing With Dataflow and BigQuery Dataflow\u00a0is Google Cloud&#8217;s managed service for running Apache Beam pipelines, code that reads data, transforms it, and writes it somewhere else, without you having to provision or manage the machines that actually do the work. You submit a pipeline, Dataflow spins up however many workers it needs, runs it, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1632,1636,1],"tags":[975,605,641,699,700,711,683,684,685,611],"class_list":["post-8045","post","type-post","status-publish","format-standard","hentry","category-bigquery","category-dataflow","category-google-cloud-platform","tag-etl-processing","tag-gcp","tag-gcp-bucket","tag-gcp-certification","tag-gcp-cloud-console","tag-gcp-instance","tag-google-cloud-certification","tag-google-cloud-console","tag-google-cloud-courses","tag-google-cloud-platform"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ETL on Google Cloud With Dataflow and BigQuery | PrwaTech<\/title>\n<meta name=\"description\" content=\"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ETL on Google Cloud With Dataflow and BigQuery | PrwaTech\" \/>\n<meta property=\"og:description\" content=\"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/\" \/>\n<meta property=\"og:site_name\" content=\"Prwatech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prwatech.in\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-17T10:15:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-19T15:19:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"506\" \/>\n\t<meta property=\"og:image:height\" content=\"215\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Prwatech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:site\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prwatech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/\",\"url\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/\",\"name\":\"ETL on Google Cloud With Dataflow and BigQuery | PrwaTech\",\"isPartOf\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg\",\"datePublished\":\"2026-09-17T10:15:10+00:00\",\"dateModified\":\"2026-09-19T15:19:11+00:00\",\"author\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\"},\"description\":\"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.\",\"breadcrumb\":{\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage\",\"url\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg\",\"contentUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg\",\"width\":506,\"height\":215},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prwatech.in\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ETL Processing on Google Cloud Using Dataflow and Big Query\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prwatech.in\/blog\/#website\",\"url\":\"https:\/\/prwatech.in\/blog\/\",\"name\":\"Prwatech\",\"description\":\"Share Ideas, Start Something Good.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prwatech.in\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\",\"name\":\"Prwatech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"caption\":\"Prwatech\"},\"url\":\"https:\/\/prwatech.in\/blog\/author\/prwatech123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ETL on Google Cloud With Dataflow and BigQuery | PrwaTech","description":"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/","og_locale":"en_US","og_type":"article","og_title":"ETL on Google Cloud With Dataflow and BigQuery | PrwaTech","og_description":"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.","og_url":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/","og_site_name":"Prwatech","article_publisher":"https:\/\/www.facebook.com\/prwatech.in\/","article_published_time":"2026-09-17T10:15:10+00:00","article_modified_time":"2026-09-19T15:19:11+00:00","og_image":[{"width":506,"height":215,"url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg","type":"image\/jpeg"}],"author":"Prwatech","twitter_card":"summary_large_image","twitter_creator":"@Eduprwatech","twitter_site":"@Eduprwatech","twitter_misc":{"Written by":"Prwatech","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/","url":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/","name":"ETL on Google Cloud With Dataflow and BigQuery | PrwaTech","isPartOf":{"@id":"https:\/\/prwatech.in\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage"},"image":{"@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage"},"thumbnailUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg","datePublished":"2026-09-17T10:15:10+00:00","dateModified":"2026-09-19T15:19:11+00:00","author":{"@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3"},"description":"Build a Python ETL pipeline with Dataflow and BigQuery, corrected for current Apache Beam and command syntax that would fail as originally written.","breadcrumb":{"@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#primaryimage","url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg","contentUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/1-8.jpg","width":506,"height":215},{"@type":"BreadcrumbList","@id":"https:\/\/prwatech.in\/blog\/google-cloud-platform\/dataflow\/etl-processing-on-google-cloud-using-dataflow-and-big-query\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prwatech.in\/blog\/"},{"@type":"ListItem","position":2,"name":"ETL Processing on Google Cloud Using Dataflow and Big Query"}]},{"@type":"WebSite","@id":"https:\/\/prwatech.in\/blog\/#website","url":"https:\/\/prwatech.in\/blog\/","name":"Prwatech","description":"Share Ideas, Start Something Good.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prwatech.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3","name":"Prwatech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","caption":"Prwatech"},"url":"https:\/\/prwatech.in\/blog\/author\/prwatech123\/"}]}},"_links":{"self":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/comments?post=8045"}],"version-history":[{"count":14,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8045\/revisions"}],"predecessor-version":[{"id":11800,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8045\/revisions\/11800"}],"wp:attachment":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/media?parent=8045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/categories?post=8045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/tags?post=8045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}