1 of 77

The Struggles We Skipped:

Data Engineering for the TikTok Generation

2 of 77

3 of 77

The Struggles We Skipped:

Data Engineering for the TikTok Generation

4 of 77

The TikTok generation of coders

5 of 77

The TikTok generation of coders

6 of 77

The TikTok generation of coders

7 of 77

The world with …

8 of 77

A tool for your

data engineering challenges:

9 of 77

A tool for your

data engineering challenges:

10 of 77

What to expect:

  • Hiba’s experience with as a new-generation data professional

11 of 77

What to expect:

  • Hiba’s experience with as a new-generation data professional
  • Why it matters for us all
  • How it works

12 of 77

Some of my roles in the past

Data Analyst

Business Analyst

Data Scientist

Computer Science Researcher

13 of 77

ETL

14 of 77

ETL issues someone like me has to face

Ad hoc sources

Learn Spark on the fly

Unstructured data

Ad hoc analysis

Ad hoc analysis of unstructured data

Streaming (read: non python based)

15 of 77

Time to data…

I’m sorting my

unstructured data into dataframes

16 of 77

Time to data

1. Structuring data (nested jsons *wink wink*)

17 of 77

Time to data

1. Structuring data (nested jsons *wink wink*)

18 of 77

Time to data

2. Data models in one line of code?

19 of 77

Time to data

3. Directly plug in my source for ad hoc sources.

Ad hoc

data

sources

20 of 77

Enter dlt

Raw data -> Analysis. I envision a plug-and-play solution.

One that is preferably

not like this:

21 of 77

Enter dlt

My pip-install-solution. The data-load-tool; dlt.

22 of 77

Code Demo

Smart device + dlt + duckdb

23 of 77

Code Demo

24 of 77

Code Demo

Step 1. Declare a pipeline

25 of 77

Code Demo

Step 2: Declare resources

26 of 77

Code Demo

Step 3: Run the pipeline

27 of 77

Code Demo

Step 4: View your schema and query your data

28 of 77

Okay, wait!!!!

29 of 77

But what if you’re a total noob?

We've all been there, and let's face it,

many of us are right in that boat at this very moment 👀.

EVERYONE ELSE AROUND YOU

YOU

30 of 77

I’m no different either …

  • Gen Z
  • Less than a year of real experience
  • Fear of annoying seniors
  • SELECT DOLLARS * 1000 AS CENTS

31 of 77

So let’s start from the beginning

What’s data engineering at all?

32 of 77

So let’s start from the beginning

What’s data engineering at all?

33 of 77

So let’s start from the beginning

What’s data engineering at all?

“I'm a plumber. I pipe data from one place to the other and make sure it's clean for the business to use.”

  • A Data Engineer on Reddit

34 of 77

In other words:

35 of 77

In other words:

But there’s a plot twist:

Data scientists deal with data engineering tasks too

36 of 77

The reality

Every data job

is a data engineering job.

37 of 77

The problem

Every data job

is a data engineering job,

but not everybody is a data engineer.

38 of 77

The solution

As mentioned before…

dlt - Data Load Tool:

  • Open-source
  • Integrates and scales well
  • Pythonic

39 of 77

TLDR: An in-house data engineer in a box

40 of 77

Why dlt?

From a junior’s perspective:

dlt - Data Load Tool:

  • Open-source
  • Integrates and scales well
  • Pythonic

41 of 77

Why dlt?

From a junior’s perspective:

dlt - Data Load Tool:

  • Community ⭐
  • Integrates and scales well
  • Pythonic

42 of 77

Why dlt?

From a junior’s perspective:

dlt - Data Load Tool:

  • Community ⭐
  • Saves time for other things
  • Pythonic

43 of 77

Why dlt?

From a junior’s perspective:

dlt - Data Load Tool:

  • Community ⭐
  • Saves time for other things
  • Smooth learning curve

44 of 77

Why dlt?

From a senior’s perspective:

dlt - Data Load Tool:

  • Open-source
  • Integrates and scales well
  • Pythonic

45 of 77

Why dlt?

From a senior’s perspective:

dlt - Data Load Tool:

  • Cost effective 👌
  • Integrates and scales well
  • Pythonic

46 of 77

Why dlt?

From a senior’s perspective:

dlt - Data Load Tool:

  • Cost effective 👌
  • No excuses from juniors 👌
  • Pythonic

47 of 77

Why dlt?

From a senior’s perspective:

dlt - Data Load Tool:

  • Cost effective 👌
  • No need to reinvent the wheel 👌
  • Pythonic

48 of 77

Why dlt?

From a senior’s perspective:

dlt - Data Load Tool:

  • Cost effective 👌
  • No need to reinvent the wheel 👌
  • Works where Python runs 👌

49 of 77

So how exactly is it making your life easier?

50 of 77

Code Demo

Step 1. Declare a pipeline

51 of 77

Code Demo

Step 1. Declare a pipeline

Declaratively create

a connection that moves data to a specified destination.

52 of 77

Code Demo

Step 2: Declare resources

53 of 77

Code Demo

Step 2: Declare resources

resource is a logical grouping of data of similar structure and origin - basically, a table in a dataset.

54 of 77

Code Demo

Step 2: Declare resources

resource is a logical grouping of data of similar structure and origin - basically, a table in a dataset.

resource is a decorator function that yields/generates data on-the-fly, instead of loading all data into memory at once.

55 of 77

Code Demo

Step 2: Declare resources

resource is a logical grouping of data of similar structure and origin - basically, a table in a dataset.

resource is a decorator function that yields/generates data on-the-fly, instead of loading all data into memory at once.

resource is passed to the pipeline for the generated data to be loaded at the destination.

56 of 77

Code Demo

Step 2: Declare resources

The default write_disposition is “append”.

57 of 77

Code Demo

Step 2: Declare resources

The default write_disposition is “append”.

You can also use “replace” to overwrite existing data, or “merge” to deduplicate or upsert data.

58 of 77

Code Demo

Step 3: Run the pipeline

59 of 77

Code Demo

Step 3: Run the pipeline

Alternatively, run the pipeline once with a single source.

60 of 77

Code Demo

Step 3: Run the pipeline

Alternatively, run the pipeline once with a single source.

source is a logical grouping of multiple resources.

Basically, a dataset with multiple tables/resources.

61 of 77

Code Demo

Step 2: Declare resources

62 of 77

Code Demo

Step 2: Declare a source with multiple resources

63 of 77

Code Demo

Step 3: Run the pipeline with a single source

64 of 77

Code Demo

Step 3: Run the pipeline with a single source

What’s the point of grouping resources?

65 of 77

Code Demo

Step 3: Run the pipeline with a single source

What’s the point of grouping resources?

Imagine you have 100 different API

endpoints, each representing a separate table.

66 of 77

Code Demo

Step 3: Run the pipeline with a single source

What’s the point of grouping resources?

Imagine you have 100 different API endpoints, each representing a separate table.

Grouping them into single source brings:

  • Efficiency: Run the pipeline once = load everything all at once.
  • Easier control: Run the pipeline with selected resources from the source, apply any transformations.

67 of 77

Code Demo

Step 3: Run the pipeline with a single source

What’s the point of grouping resources?

  • Reusability:

68 of 77

Code Demo

Step 4: View and query your data

69 of 77

Code Demo

Step 4: View and query your data: A pleasant surprise

70 of 77

Code Demo

Step 4: View and query your data: A pleasant surprise

Parent table

71 of 77

Code Demo

Step 4: View and query your data: A pleasant surprise

Parent table

Child table

72 of 77

Code Demo

Step 4: View and query your data: A pleasant surprise

Parent table

Child table

recursively

unpacked & normalised

data into

relational tables

73 of 77

Code Demo

Step 4: View and query your data: A pleasant surprise

Parent table

Child table

No need to worry about

Messy nested data!

74 of 77

The Bottom Line: pip install dlt

75 of 77

The Bottom Line: pip install dlt

BEFORE

AFTER

76 of 77

Try out our demo:

https://github.com/dlt-hub/dlt_demos/sengled_plug_demo

Get in touch:

hiba@dlthub.com & anuun@dlthub.com

77 of 77

Learn more at: