Extract. Transform. Read.A newsletter from Pipeline Hi past, present or future data professional! It’s been a busy fall; I currently have 14 tasks in various states of development. Right now my JIRA board looks like I just won bingo—twice. Unfortunately when you climb the tech ladder things only get busier which means you’re going to burn out unless you take steps toward proactivity. For me this means learning which tasks I don’t need to (and really shouldn’t) do manually. And before you think I’m going to be like that developer who put his job on auto-pilot for 5 years, my prize for achieving this automation isn’t a week of Netflix binging–it’s more work. If you’re overwhelmed by the idea of automation, I suggest you start by implementing 4 simple, small-scale automations. Auto-fill column names in SQL queries I work on queries with as many as 150 columns. Once, I had a task where I needed to replace a SELECT * with the explicit column name. Instead of wasting 30 minutes of dev time, I grabbed the columns from the INFORMATION_SCHEMA and iterated through them like the code snippet below. from google.cloud import bigquery import pandas as pd query = “ SELECT column_name AS name FROM `project.dataset.INFORMATION_SCHEMA`.COLUMNS “ bq_client = bigquery.Client() df = bq_client.query(query).to_dataframe() for d in df[“name”]: print(f”{d},”) Never write another schema Creating schemas is my least favorite part of data engineering. Unfortunately, they are incredibly important and can lead to nasty errors if incorrectly defined or, worse, set to auto detect. Luckily, if you’re creating a schema based on an existing table, you can use the same INFORMATION_SCHEMA table to select the column names and types, which I explain here. Backfill multiple CSV files Like schema design, backfills are a pain that consume an inordinate amount of development time. Remember those 14 tasks I mentioned? At least 3 are backfills. The worst kind of backfill is when you have to load data from a single file like a CSV. Fortunately, if you already have your files saved in a shared location like cloud storage, you can code an iterative process to download, transform and upload the final data. Pro tip: Name your file with a date string to make it easy to identify and fill gaps programmatically. Schedule a recurring refresh for your API credentials As a junior engineer one of my quarterly chores was to manually refresh API credentials whenever our team calendar alert said a particular service’s creds would be expiring. Instead, my solution and advice to you and your team is to determine the “life span” of your creds and create a function (or functions) that will perform the following steps:
Instead of leading to laziness, automation encourages multitasking. If you implement any of the above solutions just be sure to test your output because the last thing anyone wants is a rogue autopilot. To optimize your time, here are this week’s links as plain text.
Questions? zach@pipelinetode.com Thanks for ingesting, -Zach Quinn |
Reaching 20k+ readers on Medium and over 3k learners by email, I draw on my 4 years of experience as a Senior Data Engineer to demystify data science, cloud and programming concepts while sharing job hunt strategies so you can land and excel in data-driven roles. Subscribe for 500 words of actionable advice every Thursday.
Hi fellow data professional! This edition almost became an apology because I’ve been on a tight deadline and pre-baby morning wake up thinking/writing time has become GSD (get sh!t done) hour. Long story short: I got brought in late to a time-sensitive project that required me to speed through a planned pipeline migration. As a recovering news junkie (aka journalist), I used to live and die by deadlines. But, given the unpredictability of data-oriented work and internal deliverables, it’s...
Hi fellow data professional! For years, the opening of The Simpsons, specifically Bart writing lines on the chalkboard, has been incredibly relatable to me. Not because I’m up to mischief (none I’ll admit to here, anyway), but because I spend most days writing the same three lines of SQL over and over again. If you've ever been paranoid about a table's content, you might know what I'm talking about. It’s the aggregate COUNT(*) grouped by a date field, ordered by date DESC. The output of that...
Hi fellow data professional! In a previous newsletter, I mentioned an idea that I wanted to explore deeper. At the risk of double-quoting a la The Office’s Michael Scott quoting Wayne Gretzky (“You Miss 100% Of The Shots You Don’t Take - Waynze Gretzky - Michael Scott”), here is the idea. “To be marketable as a candidate, you don’t just want to show how you can go from A to B (requirements->pipeline). You need to go from A to C (requirements->pipeline->scale/support).” You might be asking...