You are on page 1of 106

Data Analysis and Integration

ETL tools and SQL queries


Data integration using views

Tables
(data source)
branches
company
employees
database
department Views
(mediated schema)
all_titles
all_salaries
Tables all_employees
(data source) Views all_dept_emp
titles (wrapper)
all_departments
salaries curr_titles
employees employees curr_salaries
database dept_emp curr_dept_emp
dept_manager curr_dept_manager
departments

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 2


Data integration using views
• Define the mediated schema
• Define the schema mappings between the data sources (or their
wrappers) and the mediated schema

• Write query over mediated schema


• Query unfolding reformulates the query over the mediated
schema and the wrappers as a query over the data sources

• Results are computed on-the-fly and are always up-to-date

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 3


Data integration vs. data warehousing

A. Doan, A. Halevy, Z. Ives T. Özsu, P. Valduriez


Principles of Data Integration Principles of Distributed Database Systems
Morgan Kaufmann, 2012 Springer, 2011

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 4


Data warehousing
• Design a data warehouse
– the data warehouse has its own schema, which is different from the data
source schemas
• Implement an extract-transform-load (ETL) process
– extract from data sources, transform data, store into data warehouse

• Write query over data warehouse


• Retrieve results from storage
– run ETL process regularly to keep data warehouse up-to-date

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 5


ETL process

• Extract, transform, load

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 6


ETL process

• Extracting, transforming and loading customers

A. Vaisman, E. Zimányi
Data Warehouse Systems: Design and Implementation
Springer, 2014
IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 7
ETL process

• An ETL process comprises many such transformations

A. Vaisman, E. Zimányi
Data Warehouse Systems: Design and Implementation
Springer, 2014
IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 8
ETL process

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 9


ETL tools

• ETL tools
– what do they do?
– how do they work?
– how can we use them?

• The ETL tool that we will be using:


– Pentaho Data Integration
– also known as PDI, Kettle, or Spoon
– competing products (e.g. SQL Server Integration Services)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 10


Workspace

toolbox canvas

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 11


Database connections

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 12


New database connection

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 13


New database connection

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 14


New database connection

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 15


New database connection

• Using the same connection in multiple transformations

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 16


New database connection

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 17


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 18


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 19


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 20


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 21


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 22


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 23


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 24


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 25


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 26


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 27


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 28


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 29


Table input

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 30


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 31


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 32


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 33


Filter rows

hop

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 34


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 35


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 36


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 37


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 38


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 39


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 40


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 41


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 42


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 43


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 44


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 45


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 46


Filter rows

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 47


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 48


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 49


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 50


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 51


Text file output

hop

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 52


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 53


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 54


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 55


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 56


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 57


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 58


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 59


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 60


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 61


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 62


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 63


Text file output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 64


Output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 65


Output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 66


Output

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 67


Save transformation

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 68


Run transformation

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 69


Pentaho Data Integration

• Transformations work in “streaming” mode


– the first row could reach the output before the second row is
read from input
– there are exceptions, e.g. when some aggregation on multiple
rows needs to be performed
• Transformations can be saved and executed many times
• Transformations can become quite complex

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 70


SQL query

• number of employees in each department

curr_dept_emp departments
+--------+---------+ +---------+--------------------+
| emp_no | dept_no | | dept_no | dept_name |
+--------+---------+ +---------+--------------------+
| 10721 | d009 | | d009 | Customer Service |
| 11260 | d009 | | d005 | Development |
| 11371 | d005 | | d002 | Finance |
| 11693 | d005 | | d003 | Human Resources |
| 13816 | d005 | | d001 | Marketing |
| 14007 | d002 | | d004 | Production |
| 14083 | d004 | | d006 | Quality Management |
| 14791 | d005 | | d008 | Research |
| 17698 | d005 | | d007 | Sales |
| 17739 | d005 | +---------+--------------------+
| ... | ... |
+--------+---------+

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 71


SQL query

• number of employees in each department

select *
from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no;

+--------+---------+---------+------------------+
| emp_no | dept_no | dept_no | dept_name |
+--------+---------+---------+------------------+
| 10721 | d009 | d009 | Customer Service |
| 11260 | d009 | d009 | Customer Service |
| 11371 | d005 | d005 | Development |
| 11693 | d005 | d005 | Development |
| 13816 | d005 | d005 | Development |
| 14007 | d002 | d002 | Finance |
| 14083 | d004 | d004 | Production |
| 14791 | d005 | d005 | Development |
| 17698 | d005 | d005 | Development |
| 17739 | d005 | d005 | Development |
+--------+---------+---------+------------------+
10 rows in set (0.00 sec)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 72


SQL query

• number of employees in each department


select b.dept_no, b.dept_name, count(emp_no)
from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by b.dept_no, b.dept_name;

+---------+--------------------+---------------+
| dept_no | dept_name | count(emp_no) |
+---------+--------------------+---------------+
| d001 | Marketing | 15 |
| d002 | Finance | 18 |
| d003 | Human Resources | 10 |
| d004 | Production | 44 |
| d005 | Development | 62 |
| d006 | Quality Management | 18 |
| d007 | Sales | 42 |
| d008 | Research | 14 |
| d009 | Customer Service | 29 |
+---------+--------------------+---------------+
9 rows in set (0.00 sec)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 73


SQL query

• number of employees in each department

select b.dept_no, b.dept_name, count(emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by b.dept_no, b.dept_name
having count_emp_no >= 40;

+---------+-------------+--------------+
| dept_no | dept_name | count_emp_no |
+---------+-------------+--------------+
| d004 | Production | 44 |
| d005 | Development | 62 |
| d007 | Sales | 42 |
+---------+-------------+--------------+
3 rows in set (0.00 sec)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 74


SQL query

• number of employees in each department

select b.dept_no, b.dept_name, count(emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by b.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

+---------+-------------+--------------+
| dept_no | dept_name | count_emp_no |
+---------+-------------+--------------+
| d005 | Development | 62 |
| d004 | Production | 44 |
| d007 | Sales | 42 |
+---------+-------------+--------------+
3 rows in set (0.00 sec)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 75


SQL query

• doing the same query with an ETL tool

select b.dept_no, b.dept_name, count(emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by b.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

– how to do it?

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 76


Table input

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 77


Table input

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 78


Select values

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 79


Select values

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 80


Join rows

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 81


Sort rows

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 82


Group by

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 83


Group by

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 84


Filter rows

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 85


Filter rows

select a.dept_no, b.dept_name, count(a.emp_no) as count_emp_no


from curr_dept_emp as a, departments as b
where a.dept_no = b.dept_no
group by a.dept_no, b.dept_name
having count_emp_no >= 40
order by count_emp_no desc;

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 86


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 87


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 88


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 89


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 90


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 91


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 92


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 93


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 94


Preview

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 95


Alternatives

• A completely different solution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 96


Alternatives

• A completely different solution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 97


Alternatives

• Other possible intermediate solutions


– column renaming in SQL

– column renaming and table join in SQL

– column renaming, table join, and group by in SQL

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 98


Alternatives

• As a general rule
– offload as much as possible to database system
• filtering rows, selecting columns, and (especially) table joins
– unless the required data comes from multiple data sources
– or when processing is difficult to implement in SQL
• e.g. duplicate detection via string matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 99


ETL tools

• Then why use an ETL tool?


– data comes from different databases/systems
– data sources other than databases (e.g. text files)
– complex data merging and transformations
– approximate matching, duplicate detection, data cleaning
– materialization to different outputs (databases, files, etc.)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 100


Materialization

• Materialization to database table

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 101


Materialization

• Materialization to database table

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 102


Materialization

• Materialization to database table

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 103


Materialization

• Running the transformation

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 104


Materialization

• Running the transformation

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 105


Materialization

• Materialization to database table

select * from num_emp_dept;

+-----------+-------------+--------------+
| dept_no_1 | dept_name | count_emp_no |
+-----------+-------------+--------------+
| d005 | Development | 62 |
| d004 | Production | 44 |
| d007 | Sales | 42 |
+-----------+-------------+--------------+
3 rows in set (0.00 sec)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 106

You might also like