SlideShare uma empresa Scribd logo
1 de 41
College 2 – ETL and loading data into
R
Hoofdstukken
Kortom: Wat is er blijven hangen van het vorige college?
Het doel van dit college is
• Dat je om kunt gaan met messy data (DataCamp)
• Dat je begrip hebt van het ETL proces
• Dat je kennis hebt van verschillende type data acquisitie
• Dat je zelfstandig online data kunt ETL-en in R
Messy data á la DataCamp
ETL (hfst 12 corporate performance mgt)
Loading data into R (hfst 2)
Er zat een API op een stokkie
Messy data according to DataCamp
1. Column headers are values, not variable names
2. Multiple values are stored in one column
3. Variables are stored in both rows and columns
4. Multiple types of observational units are stored in the same table
5. A single observational unit is stored in multiple tables
Messy
Gather
Unite
Seperate
Data.table -> dcast / reshape
Messy data according to DataCamp / tidyR
CPM
ETL volgens
performance
management
Definities ETL
Extract
The process of pulling data from a source server or systems to an
intermediate format
Transform
Reconciles data type and format differences, resolves uniqueness
issues, and ansures conformity of data before the data is loaded into
the data warehouse, it can also contain repairing and cleansing data.
Load
Moves data from the staging area into the dimension** and fact tables**
** volgt in college over dwh
3 methoden om gegevens op te halen
Batch ETL,
• Nadat productiesysteem consistent is
• Initiatie bij DWH
Online ETL,
• Vanuit productiesysteem contiue update naar DWH
Ad-hoc ETL,
Zodra de gebruiker om een rapport vraagt
Proces stappen ETL
Isoleren
Let op
• structuur data (zie verderop presentatie)
• Doorlooptijd (1 mB vs 10TB)
• Netwerkbelasting
• actualiteit
Prepareren
Reconciles data type and format differences, resolves uniqueness issues,
and ansures conformity of data before the data is loaded into the data
warehouse, it can also contain repairing and cleansing data.
Ook aggregeren en verrijken
Transformeren
Uniform maken volgens DWH (ook wel mappings klaar maken)
Laden
Inladen in DWH
OUT OF 380,000 RECORDS A SUBSET OF
~250,000 WAS SUITABLE FOR ANALYSIS
Data filtering and smart algorithms required for quality of data analysis.
0
50000
100000
150000
200000
250000
300000
350000
400000
450000
Total before
cleansing
Connection time
repair
Physicly impossible
charge sessions
Unknown data Double records Short time Double provider Net usable records
Causes of ~35% data removal per error type
EXAMPLE OF SHORT TIME ALGORITHM
SHORT TIME CHARGE SESSIONS FILTERED
Note: Our hypothesis is that loose cable connections and information transfer
issues cause this problem.
total charge sesion
Session 1
Session 2
Session 3
Session 4
Session 5
Session 6
Session 7
Session 8
Session 9
The crawling algorithm
checks on adjacent
short times.
The algorithm
influences the # charge
sessions as well, and
thus the mean session
duration.
Source: Charge infrastructure forecast database
WITH THE CHARGING DATA AS CENTRAL DATASET, THE
DATABASE IS CONTINUOUSLY EXPANDED, EXTENDED AND
ENRICHED AND SCRAPED
Data Extension
Data enrichment Data Scraping
Data Expansion
OCPI
Let op bij https daar wordt R niet blij van dus oplossing
Extract
# Fail
read.csv("https://raw.github.com/sciruela/Happiness-Salaries/master/data.csv")
# Win
read.url <- function(url, ...){
tmpFile <- tempfile()
download.file(url, destfile = tmpFile, method = "curl")
url.data <- read.csv(tmpFile, ...)
return(url.data)
}
read.url("https://raw.github.com/sciruela/Happiness-Salaries/master/data.csv")
Tidy data betekent ook de juiste type variablelen
Hoe zou je dit met dlyr aanpakken
En hoe met datatable?
-
filter(flights, month == 1, day == 1)
flights %>% filter( month == 1, day == 1)
#> # A tibble: 842 x 19
#> year month day dep_time sched_dep_time dep_delay arr_time
#> <int> <int> <int> <int> <int> <dbl> <int>
#> 1 2013 1 1 517 515 2 830
#> 2 2013 1 1 533 529 4 850
#> 3 2013 1 1 542 540 2 923
#> 4 2013 1 1 544 545 -1 1004
#> ... with 838 more rows, and 12 more variables: sched_arr_time <int>,
#> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
#> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
#> minute <dbl>, time_hour <time>
RJDBC
# Set JAVA_HOME, set max. memory, and load rJava library
Sys.setenv(JAVA_HOME='/path/to/java_home')
options(java.parameters="-Xmx2g")
library(rJava)
# Output Java version
.jinit()
print(.jcall("java/lang/System", "S", "getProperty", "java.version"))
# Load RJDBC library
library(RJDBC)
# Create connection driver and open connection
jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="lib/ojdbc6.jar")
jdbcConnection <- dbConnect(jdbcDriver,
"jdbc:oracle:thin:@//database.hostname.com:port/service_name_or_sid", "username",
"password")
# Query on the Oracle instance name.
instanceName <- dbGetQuery(jdbcConnection, "SELECT instance_name FROM v$instance")
print(instanceName)
# Close connection
dbDisconnect(jdbcConnection)
RODBC
library(RODBC)
channel <- odbcDriverConnect("driver=SQL Server;server=01wh155073")
initdata<- sqlQuery(channel,paste("select * from test_DB ..
test_vikrant"))
dim(initdata)
odbcClose(channel)
gaan we nog leren tijdens de werkcolleges
File types
JSON versus XML
Beide file types zijn ongestructureerd maar
toch.. Leg uit!
Over API’s
De basisgedachte achter API’s
De volgende statements kun je uitvoeren
Twitter doorzoeken met API
#Create your own appication key at https://dev.twitter.com/apps
consumer_key = "EZRy5JzOH2QQmVAe9B4j2w";
consumer_secret = "OIDC4MdfZJ82nbwpZfoUO4WOLTYjoRhpHRAWj6JMec";
#Use basic auth
secret <- openssl::base64_encode(paste(consumer_key, consumer_secret, sep = ":"));
req <- httr::POST("https://api.twitter.com/oauth2/token",
httr::add_headers(
"Authorization" = paste("Basic", secret),
"Content-Type" = "application/x-www-form-urlencoded;charset=UTF-8"
),
body = "grant_type=client_credentials"
);
#Extract the access token
token <- paste("Bearer", content(req)$access_token)
#Actual API call
url <-
"https://api.twitter.com/1.1/statuses/user_timeline.json?count=10&screen_name=Rbloggers"
req <- httr::GET(url, add_headers(Authorization = token))
json <- httr::content(req, as = "text")
tweets <- fromJSON(json)
substring(tweets$text, 1, 100)
Of met een package
# Install and Activate Packages
install.packages("twitteR", "RCurl", "RJSONIO", "stringr")
library(twitteR)
library(RCurl)
library(RJSONIO)
library(stringr)
# Declare Twitter API Credentials
api_key <- "API KEY" # From dev.twitter.com
api_secret <- "API SECRET" # From dev.twitter.com
token <- "TOKEN" # From dev.twitter.com
token_secret <- "TOKEN SECRET" # From dev.twitter.com
# Create Twitter Connection
setup_twitter_oauth(api_key, api_secret, token, token_secret)
# Run Twitter Search. Format is searchTwitter("Search Terms", n=100, lang="en",
geocode="lat,lng", also accepts since and until).
tweets <- searchTwitter("Obamacare OR ACA OR 'Affordable Care Act' OR #ACA", n=100,
lang="en", since="2014-08-20")
# Transform tweets list into a data frame
tweets.df <- twListToDF(tweets)
# Use the searchTwitter function to only get tweets within 50 miles of Los Angeles
tweets_geolocated <- searchTwitter("Obamacare OR ACA OR 'Affordable Care Act' OR #ACA",
n=100, lang="en", geocode='34.04993,-118.24084,50mi', since="2014-08-20")
tweets_geoolocated.df <- twListToDF(tweets_geolocated)
Google doorzoeken met API
library(gtrendsR)
user <- "<Google account email>"
psw <- "<Google account password>"
gconnect(usr, psw)
lang_trend <- gtrends(c("data is", "data are"), res="week")
plot(lang_trend)
Opdracht voor komende vrijdag
Opdracht presentatie college vrijdag
Doel:
Open data gebruiken voor analyses
Opdracht:
Onderzoek of het weer invloed heeft op het eten van ijsjes (en dit delen op
sociale media)
Stappen
1. Verplicht zoek een nieuwe groep die bestaat uit studenten van
verschillende opleidingen. We willen geen eenzijdige teams meer.
2. Registreer je voor een Twitter, Google en facebook API key
3. Download met R code de KNMI data
4. Zoek de frequentie van relevante ijsjes termen op diverse media
5. Maak relevante plots en een lopend verhaal over de relatie tussen het
weer ijsconsumptie
Loops een relevante ijsjes termen
Maak een lijst relevante termen
maak eerst alle code voor 1 term
Maak vervolgens een loop voor de collectie van termen (lapply)
Maak een dataframe waarin je in de loop steeds een rbind doet van
het resultaat aan een totaal dataframe waarover je de analyse doet
Typische Tentamenvragen
• Leg uit wat het verschil is tussen ELT en ELT? Welk effect op
rekencapaciteit heeft dit?
• Welke fases kent het ELT proces en wat gebeurt er in deze
fases?
• Geef 3 voorbeelden van messy data en leg uit hoe je met R deze
weer tidy kun maken.
• Leg uit wat een API is
• Waarom is JSON wel en geen gestructureerd file type?
https://www.youtube.com/watch?v=jyju2P-
7hPA&list=PLAwxTw4SYaPm4R6j_wzVOCV9fJaiQDYx4
LECTURE
Volgende keer gaan te praten over datawarehouses.
Ik verwacht dat je dan hfst 8 (was deze week) en 11
en 12 gelezen hebt.
Blended learning tips
• Zoek relevante flipjes over DHW en OLAP en ETL
Links
Datasets
https://vincentarelbundock.github.io/Rdatasets/datasets.html
https://github.com/caesar0301/awesome-public-datasets#data-challenges
https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/00Index.html
instructies
https://www.r-bloggers.com/playing-with-twitter-data/
https://www.r-bloggers.com/how-to-create-a-twitter-sentiment-analysis-using-r-and-
shiny/
https://www.r-bloggers.com/accessing-apis-from-r-and-a-little-r-programming/
https://theodi.org/blog/how-to-use-r-to-access-data-on-the-web
http://bogdanrau.com/blog/collecting-tweets-using-r-and-the-twitter-search-api/
http://www.ryanpraski.com/google-search-console-api-r-guide-to-get-started/
https://bigdataenthusiast.wordpress.com/2016/03/19/mining-facebook-data-using-r-
facebook-api/

Mais conteúdo relacionado

Destaque

Bridge Detailed Construction
Bridge Detailed ConstructionBridge Detailed Construction
Bridge Detailed ConstructionAlan Bassett
 
Scotland Invitation
Scotland InvitationScotland Invitation
Scotland InvitationAlan Bassett
 
Christening
ChristeningChristening
Christeningthackley
 
Iniziativa100intervento Def
Iniziativa100intervento DefIniziativa100intervento Def
Iniziativa100intervento DefAnnarita Salsi
 
Lifting Matters Issue 8 November 2009
Lifting Matters Issue 8 November 2009Lifting Matters Issue 8 November 2009
Lifting Matters Issue 8 November 2009Alan Bassett
 
agencija registracija vozila agencije tehnicki pregled
agencija registracija vozila agencije tehnicki pregledagencija registracija vozila agencije tehnicki pregled
agencija registracija vozila agencije tehnicki pregledregistracija vozila
 
Achieving large-scale organisational change through e-learning - Bupa Health ...
Achieving large-scale organisational change through e-learning - Bupa Health ...Achieving large-scale organisational change through e-learning - Bupa Health ...
Achieving large-scale organisational change through e-learning - Bupa Health ...Brightwave Group
 
Accrediting informal learning for professional development at London Metropol...
Accrediting informal learning for professional development at London Metropol...Accrediting informal learning for professional development at London Metropol...
Accrediting informal learning for professional development at London Metropol...Brightwave Group
 
Google docs cgiar
Google docs cgiarGoogle docs cgiar
Google docs cgiarpbrolley
 
Good Health And Safety
Good Health And SafetyGood Health And Safety
Good Health And SafetyAlan Bassett
 
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...Alessandro Lovari
 
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...Brightwave Group
 

Destaque (18)

A Question of Content
A Question of ContentA Question of Content
A Question of Content
 
Kelly C. Ruggles
Kelly C. RugglesKelly C. Ruggles
Kelly C. Ruggles
 
Bridge Detailed Construction
Bridge Detailed ConstructionBridge Detailed Construction
Bridge Detailed Construction
 
Scotland Invitation
Scotland InvitationScotland Invitation
Scotland Invitation
 
Christening
ChristeningChristening
Christening
 
Iniziativa100intervento Def
Iniziativa100intervento DefIniziativa100intervento Def
Iniziativa100intervento Def
 
Mhw2011leaflet
Mhw2011leafletMhw2011leaflet
Mhw2011leaflet
 
Lifting Matters Issue 8 November 2009
Lifting Matters Issue 8 November 2009Lifting Matters Issue 8 November 2009
Lifting Matters Issue 8 November 2009
 
agencija registracija vozila agencije tehnicki pregled
agencija registracija vozila agencije tehnicki pregledagencija registracija vozila agencije tehnicki pregled
agencija registracija vozila agencije tehnicki pregled
 
Achieving large-scale organisational change through e-learning - Bupa Health ...
Achieving large-scale organisational change through e-learning - Bupa Health ...Achieving large-scale organisational change through e-learning - Bupa Health ...
Achieving large-scale organisational change through e-learning - Bupa Health ...
 
Baldor g pyt
Baldor g pytBaldor g pyt
Baldor g pyt
 
Accrediting informal learning for professional development at London Metropol...
Accrediting informal learning for professional development at London Metropol...Accrediting informal learning for professional development at London Metropol...
Accrediting informal learning for professional development at London Metropol...
 
Google docs cgiar
Google docs cgiarGoogle docs cgiar
Google docs cgiar
 
Good Health And Safety
Good Health And SafetyGood Health And Safety
Good Health And Safety
 
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...
Non basta essere su Facebook per essere 2.0. La qualità della presenza della ...
 
Making Learning Alive
Making Learning Alive Making Learning Alive
Making Learning Alive
 
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...
Charles Gould at Learning Live 2014: Total learning: learn faster, work smart...
 
Kelly ruggles
Kelly rugglesKelly ruggles
Kelly ruggles
 

Semelhante a Software Engineering College 2 - ETL and databases

Software Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataSoftware Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataJurjen Helmus
 
Gebruikersbijeenkomst data.overheid.nl 30 juni dcat
Gebruikersbijeenkomst data.overheid.nl 30 juni   dcatGebruikersbijeenkomst data.overheid.nl 30 juni   dcat
Gebruikersbijeenkomst data.overheid.nl 30 juni dcatJeffrey Cafferata
 
Software Engineering College 5 -managing data
Software Engineering College 5 -managing dataSoftware Engineering College 5 -managing data
Software Engineering College 5 -managing dataJurjen Helmus
 
Database Platformen Versus Etl Tools
Database Platformen Versus Etl ToolsDatabase Platformen Versus Etl Tools
Database Platformen Versus Etl ToolsAlexander van Helm
 
20130308 GB les 6
20130308 GB les 620130308 GB les 6
20130308 GB les 6mleeuwen
 
Datamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDatamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDirk Roorda
 
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS Performance
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS PerformanceDSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS Performance
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS PerformanceDeltares
 
Hoe beheer je custom database tabellen in WordPress
Hoe beheer je custom database tabellen in WordPressHoe beheer je custom database tabellen in WordPress
Hoe beheer je custom database tabellen in WordPressWim Van Cauwenbergh
 
Pembertons gelijk
Pembertons gelijkPembertons gelijk
Pembertons gelijkDino Seelig
 
Final Opdracht Sql Server2008
Final Opdracht Sql Server2008Final Opdracht Sql Server2008
Final Opdracht Sql Server2008guest5ad398a
 
metadata & open source #osgeonl dag 2012
metadata & open source #osgeonl dag 2012 metadata & open source #osgeonl dag 2012
metadata & open source #osgeonl dag 2012 pvangenuchten
 
Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniektjercus
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iskaTim Mahy
 
Cursus Zend Framework - 1
Cursus Zend Framework - 1Cursus Zend Framework - 1
Cursus Zend Framework - 1bartjeukendrup
 

Semelhante a Software Engineering College 2 - ETL and databases (20)

Software Engineering College 4 - exploring data
Software Engineering College 4 - exploring dataSoftware Engineering College 4 - exploring data
Software Engineering College 4 - exploring data
 
Gebruikersbijeenkomst data.overheid.nl 30 juni dcat
Gebruikersbijeenkomst data.overheid.nl 30 juni   dcatGebruikersbijeenkomst data.overheid.nl 30 juni   dcat
Gebruikersbijeenkomst data.overheid.nl 30 juni dcat
 
embedded SQL en JDBC
embedded SQL en JDBCembedded SQL en JDBC
embedded SQL en JDBC
 
Software Engineering College 5 -managing data
Software Engineering College 5 -managing dataSoftware Engineering College 5 -managing data
Software Engineering College 5 -managing data
 
Gegevensbanken 2010 les14
Gegevensbanken 2010 les14Gegevensbanken 2010 les14
Gegevensbanken 2010 les14
 
Database Platformen Versus Etl Tools
Database Platformen Versus Etl ToolsDatabase Platformen Versus Etl Tools
Database Platformen Versus Etl Tools
 
20130308 GB les 6
20130308 GB les 620130308 GB les 6
20130308 GB les 6
 
Fedora CMA en XSLT
Fedora CMA en XSLTFedora CMA en XSLT
Fedora CMA en XSLT
 
Datamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDatamanagement for Research: A Case Study
Datamanagement for Research: A Case Study
 
JDBC en embedded SQL
JDBC en embedded SQLJDBC en embedded SQL
JDBC en embedded SQL
 
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS Performance
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS PerformanceDSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS Performance
DSD-NL 2015, Delft-FEWS Gebruikersdag, 8 FEWS Performance
 
Hoe beheer je custom database tabellen in WordPress
Hoe beheer je custom database tabellen in WordPressHoe beheer je custom database tabellen in WordPress
Hoe beheer je custom database tabellen in WordPress
 
Pembertons gelijk
Pembertons gelijkPembertons gelijk
Pembertons gelijk
 
Genereren Van Mapings
Genereren Van MapingsGenereren Van Mapings
Genereren Van Mapings
 
Final Opdracht Sql Server2008
Final Opdracht Sql Server2008Final Opdracht Sql Server2008
Final Opdracht Sql Server2008
 
metadata & open source #osgeonl dag 2012
metadata & open source #osgeonl dag 2012 metadata & open source #osgeonl dag 2012
metadata & open source #osgeonl dag 2012
 
Excellent rest met de web api
Excellent rest met de web apiExcellent rest met de web api
Excellent rest met de web api
 
Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniek
 
2010 iska - tim m - nosql iska
2010   iska - tim m - nosql iska2010   iska - tim m - nosql iska
2010 iska - tim m - nosql iska
 
Cursus Zend Framework - 1
Cursus Zend Framework - 1Cursus Zend Framework - 1
Cursus Zend Framework - 1
 

Mais de Jurjen Helmus

Software Engineering College 6 -timeseries data
Software Engineering College 6 -timeseries dataSoftware Engineering College 6 -timeseries data
Software Engineering College 6 -timeseries dataJurjen Helmus
 
Software for big data - setting the scene
Software for big data -   setting the sceneSoftware for big data -   setting the scene
Software for big data - setting the sceneJurjen Helmus
 
innoveren_met_big_data_jr_helmus
innoveren_met_big_data_jr_helmusinnoveren_met_big_data_jr_helmus
innoveren_met_big_data_jr_helmusJurjen Helmus
 
Roadmapping product service combinations
Roadmapping product service combinationsRoadmapping product service combinations
Roadmapping product service combinationsJurjen Helmus
 
promotie big data in urban technology
promotie big data in urban technologypromotie big data in urban technology
promotie big data in urban technologyJurjen Helmus
 
Opdracht 1 Het big data landschap
Opdracht 1 Het big data landschap Opdracht 1 Het big data landschap
Opdracht 1 Het big data landschap Jurjen Helmus
 
gouden tips voor Blended learning en future proof onderwijs
gouden tips voor Blended learning en future proof onderwijsgouden tips voor Blended learning en future proof onderwijs
gouden tips voor Blended learning en future proof onderwijsJurjen Helmus
 
Workshop webcollege - cursus didactiek
Workshop webcollege - cursus didactiekWorkshop webcollege - cursus didactiek
Workshop webcollege - cursus didactiekJurjen Helmus
 
Value chain innovation - Breaking the chains
Value chain innovation - Breaking the chainsValue chain innovation - Breaking the chains
Value chain innovation - Breaking the chainsJurjen Helmus
 
Lecture roadmapping product service combinations
Lecture roadmapping product service combinationsLecture roadmapping product service combinations
Lecture roadmapping product service combinationsJurjen Helmus
 
Innovation management at Saab
Innovation management at Saab Innovation management at Saab
Innovation management at Saab Jurjen Helmus
 
kansen van Internet of things voor Technisch Bedrijfskunde Ingenieurs
kansen van Internet of things voor Technisch Bedrijfskunde Ingenieurskansen van Internet of things voor Technisch Bedrijfskunde Ingenieurs
kansen van Internet of things voor Technisch Bedrijfskunde IngenieursJurjen Helmus
 
Scenario analyse en planning voor innovatie
Scenario analyse en planning voor innovatie Scenario analyse en planning voor innovatie
Scenario analyse en planning voor innovatie Jurjen Helmus
 
Roadmapping Product Service Combinations
Roadmapping Product Service CombinationsRoadmapping Product Service Combinations
Roadmapping Product Service CombinationsJurjen Helmus
 
Microles lateraal denken
Microles lateraal denkenMicroles lateraal denken
Microles lateraal denkenJurjen Helmus
 
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...Product launch - de integratie tussen Marketing / Productie (opschaling) / in...
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...Jurjen Helmus
 
Denkpatronen open innovatie en keten innovatie - 2012-2013
Denkpatronen open innovatie en keten innovatie - 2012-2013Denkpatronen open innovatie en keten innovatie - 2012-2013
Denkpatronen open innovatie en keten innovatie - 2012-2013Jurjen Helmus
 
Marktinschatting en forecasting
Marktinschatting en forecastingMarktinschatting en forecasting
Marktinschatting en forecastingJurjen Helmus
 

Mais de Jurjen Helmus (20)

Software Engineering College 6 -timeseries data
Software Engineering College 6 -timeseries dataSoftware Engineering College 6 -timeseries data
Software Engineering College 6 -timeseries data
 
Software for big data - setting the scene
Software for big data -   setting the sceneSoftware for big data -   setting the scene
Software for big data - setting the scene
 
innoveren_met_big_data_jr_helmus
innoveren_met_big_data_jr_helmusinnoveren_met_big_data_jr_helmus
innoveren_met_big_data_jr_helmus
 
Roadmapping product service combinations
Roadmapping product service combinationsRoadmapping product service combinations
Roadmapping product service combinations
 
promotie big data in urban technology
promotie big data in urban technologypromotie big data in urban technology
promotie big data in urban technology
 
Opdracht 1 Het big data landschap
Opdracht 1 Het big data landschap Opdracht 1 Het big data landschap
Opdracht 1 Het big data landschap
 
gouden tips voor Blended learning en future proof onderwijs
gouden tips voor Blended learning en future proof onderwijsgouden tips voor Blended learning en future proof onderwijs
gouden tips voor Blended learning en future proof onderwijs
 
Workshop webcollege - cursus didactiek
Workshop webcollege - cursus didactiekWorkshop webcollege - cursus didactiek
Workshop webcollege - cursus didactiek
 
Value chain innovation - Breaking the chains
Value chain innovation - Breaking the chainsValue chain innovation - Breaking the chains
Value chain innovation - Breaking the chains
 
Lecture roadmapping product service combinations
Lecture roadmapping product service combinationsLecture roadmapping product service combinations
Lecture roadmapping product service combinations
 
Innovation management at Saab
Innovation management at Saab Innovation management at Saab
Innovation management at Saab
 
kansen van Internet of things voor Technisch Bedrijfskunde Ingenieurs
kansen van Internet of things voor Technisch Bedrijfskunde Ingenieurskansen van Internet of things voor Technisch Bedrijfskunde Ingenieurs
kansen van Internet of things voor Technisch Bedrijfskunde Ingenieurs
 
Scenario analyse en planning voor innovatie
Scenario analyse en planning voor innovatie Scenario analyse en planning voor innovatie
Scenario analyse en planning voor innovatie
 
Roadmapping Product Service Combinations
Roadmapping Product Service CombinationsRoadmapping Product Service Combinations
Roadmapping Product Service Combinations
 
Microles lateraal denken
Microles lateraal denkenMicroles lateraal denken
Microles lateraal denken
 
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...Product launch - de integratie tussen Marketing / Productie (opschaling) / in...
Product launch - de integratie tussen Marketing / Productie (opschaling) / in...
 
Denkpatronen open innovatie en keten innovatie - 2012-2013
Denkpatronen open innovatie en keten innovatie - 2012-2013Denkpatronen open innovatie en keten innovatie - 2012-2013
Denkpatronen open innovatie en keten innovatie - 2012-2013
 
Marktinschatting en forecasting
Marktinschatting en forecastingMarktinschatting en forecasting
Marktinschatting en forecasting
 
4.2 voorlichting
4.2 voorlichting4.2 voorlichting
4.2 voorlichting
 
Cleantech
CleantechCleantech
Cleantech
 

Software Engineering College 2 - ETL and databases

  • 1. College 2 – ETL and loading data into R
  • 2. Hoofdstukken Kortom: Wat is er blijven hangen van het vorige college?
  • 3. Het doel van dit college is • Dat je om kunt gaan met messy data (DataCamp) • Dat je begrip hebt van het ETL proces • Dat je kennis hebt van verschillende type data acquisitie • Dat je zelfstandig online data kunt ETL-en in R
  • 4.
  • 5. Messy data á la DataCamp ETL (hfst 12 corporate performance mgt) Loading data into R (hfst 2) Er zat een API op een stokkie
  • 6.
  • 7. Messy data according to DataCamp 1. Column headers are values, not variable names 2. Multiple values are stored in one column 3. Variables are stored in both rows and columns 4. Multiple types of observational units are stored in the same table 5. A single observational unit is stored in multiple tables
  • 8. Messy Gather Unite Seperate Data.table -> dcast / reshape Messy data according to DataCamp / tidyR
  • 10.
  • 11.
  • 12. Definities ETL Extract The process of pulling data from a source server or systems to an intermediate format Transform Reconciles data type and format differences, resolves uniqueness issues, and ansures conformity of data before the data is loaded into the data warehouse, it can also contain repairing and cleansing data. Load Moves data from the staging area into the dimension** and fact tables** ** volgt in college over dwh
  • 13. 3 methoden om gegevens op te halen Batch ETL, • Nadat productiesysteem consistent is • Initiatie bij DWH Online ETL, • Vanuit productiesysteem contiue update naar DWH Ad-hoc ETL, Zodra de gebruiker om een rapport vraagt
  • 14. Proces stappen ETL Isoleren Let op • structuur data (zie verderop presentatie) • Doorlooptijd (1 mB vs 10TB) • Netwerkbelasting • actualiteit Prepareren Reconciles data type and format differences, resolves uniqueness issues, and ansures conformity of data before the data is loaded into the data warehouse, it can also contain repairing and cleansing data. Ook aggregeren en verrijken Transformeren Uniform maken volgens DWH (ook wel mappings klaar maken) Laden Inladen in DWH
  • 15. OUT OF 380,000 RECORDS A SUBSET OF ~250,000 WAS SUITABLE FOR ANALYSIS Data filtering and smart algorithms required for quality of data analysis. 0 50000 100000 150000 200000 250000 300000 350000 400000 450000 Total before cleansing Connection time repair Physicly impossible charge sessions Unknown data Double records Short time Double provider Net usable records Causes of ~35% data removal per error type
  • 16. EXAMPLE OF SHORT TIME ALGORITHM SHORT TIME CHARGE SESSIONS FILTERED Note: Our hypothesis is that loose cable connections and information transfer issues cause this problem. total charge sesion Session 1 Session 2 Session 3 Session 4 Session 5 Session 6 Session 7 Session 8 Session 9 The crawling algorithm checks on adjacent short times. The algorithm influences the # charge sessions as well, and thus the mean session duration. Source: Charge infrastructure forecast database
  • 17. WITH THE CHARGING DATA AS CENTRAL DATASET, THE DATABASE IS CONTINUOUSLY EXPANDED, EXTENDED AND ENRICHED AND SCRAPED Data Extension Data enrichment Data Scraping Data Expansion OCPI
  • 18.
  • 19. Let op bij https daar wordt R niet blij van dus oplossing Extract # Fail read.csv("https://raw.github.com/sciruela/Happiness-Salaries/master/data.csv") # Win read.url <- function(url, ...){ tmpFile <- tempfile() download.file(url, destfile = tmpFile, method = "curl") url.data <- read.csv(tmpFile, ...) return(url.data) } read.url("https://raw.github.com/sciruela/Happiness-Salaries/master/data.csv")
  • 20. Tidy data betekent ook de juiste type variablelen
  • 21. Hoe zou je dit met dlyr aanpakken En hoe met datatable? - filter(flights, month == 1, day == 1) flights %>% filter( month == 1, day == 1) #> # A tibble: 842 x 19 #> year month day dep_time sched_dep_time dep_delay arr_time #> <int> <int> <int> <int> <int> <dbl> <int> #> 1 2013 1 1 517 515 2 830 #> 2 2013 1 1 533 529 4 850 #> 3 2013 1 1 542 540 2 923 #> 4 2013 1 1 544 545 -1 1004 #> ... with 838 more rows, and 12 more variables: sched_arr_time <int>, #> arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>, #> origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, #> minute <dbl>, time_hour <time>
  • 22.
  • 23. RJDBC # Set JAVA_HOME, set max. memory, and load rJava library Sys.setenv(JAVA_HOME='/path/to/java_home') options(java.parameters="-Xmx2g") library(rJava) # Output Java version .jinit() print(.jcall("java/lang/System", "S", "getProperty", "java.version")) # Load RJDBC library library(RJDBC) # Create connection driver and open connection jdbcDriver <- JDBC(driverClass="oracle.jdbc.OracleDriver", classPath="lib/ojdbc6.jar") jdbcConnection <- dbConnect(jdbcDriver, "jdbc:oracle:thin:@//database.hostname.com:port/service_name_or_sid", "username", "password") # Query on the Oracle instance name. instanceName <- dbGetQuery(jdbcConnection, "SELECT instance_name FROM v$instance") print(instanceName) # Close connection dbDisconnect(jdbcConnection)
  • 24. RODBC library(RODBC) channel <- odbcDriverConnect("driver=SQL Server;server=01wh155073") initdata<- sqlQuery(channel,paste("select * from test_DB .. test_vikrant")) dim(initdata) odbcClose(channel) gaan we nog leren tijdens de werkcolleges
  • 26. JSON versus XML Beide file types zijn ongestructureerd maar toch.. Leg uit!
  • 27.
  • 30. De volgende statements kun je uitvoeren
  • 31. Twitter doorzoeken met API #Create your own appication key at https://dev.twitter.com/apps consumer_key = "EZRy5JzOH2QQmVAe9B4j2w"; consumer_secret = "OIDC4MdfZJ82nbwpZfoUO4WOLTYjoRhpHRAWj6JMec"; #Use basic auth secret <- openssl::base64_encode(paste(consumer_key, consumer_secret, sep = ":")); req <- httr::POST("https://api.twitter.com/oauth2/token", httr::add_headers( "Authorization" = paste("Basic", secret), "Content-Type" = "application/x-www-form-urlencoded;charset=UTF-8" ), body = "grant_type=client_credentials" ); #Extract the access token token <- paste("Bearer", content(req)$access_token) #Actual API call url <- "https://api.twitter.com/1.1/statuses/user_timeline.json?count=10&screen_name=Rbloggers" req <- httr::GET(url, add_headers(Authorization = token)) json <- httr::content(req, as = "text") tweets <- fromJSON(json) substring(tweets$text, 1, 100)
  • 32.
  • 33. Of met een package # Install and Activate Packages install.packages("twitteR", "RCurl", "RJSONIO", "stringr") library(twitteR) library(RCurl) library(RJSONIO) library(stringr) # Declare Twitter API Credentials api_key <- "API KEY" # From dev.twitter.com api_secret <- "API SECRET" # From dev.twitter.com token <- "TOKEN" # From dev.twitter.com token_secret <- "TOKEN SECRET" # From dev.twitter.com # Create Twitter Connection setup_twitter_oauth(api_key, api_secret, token, token_secret) # Run Twitter Search. Format is searchTwitter("Search Terms", n=100, lang="en", geocode="lat,lng", also accepts since and until). tweets <- searchTwitter("Obamacare OR ACA OR 'Affordable Care Act' OR #ACA", n=100, lang="en", since="2014-08-20") # Transform tweets list into a data frame tweets.df <- twListToDF(tweets) # Use the searchTwitter function to only get tweets within 50 miles of Los Angeles tweets_geolocated <- searchTwitter("Obamacare OR ACA OR 'Affordable Care Act' OR #ACA", n=100, lang="en", geocode='34.04993,-118.24084,50mi', since="2014-08-20") tweets_geoolocated.df <- twListToDF(tweets_geolocated)
  • 34. Google doorzoeken met API library(gtrendsR) user <- "<Google account email>" psw <- "<Google account password>" gconnect(usr, psw) lang_trend <- gtrends(c("data is", "data are"), res="week") plot(lang_trend)
  • 35.
  • 37. Opdracht presentatie college vrijdag Doel: Open data gebruiken voor analyses Opdracht: Onderzoek of het weer invloed heeft op het eten van ijsjes (en dit delen op sociale media) Stappen 1. Verplicht zoek een nieuwe groep die bestaat uit studenten van verschillende opleidingen. We willen geen eenzijdige teams meer. 2. Registreer je voor een Twitter, Google en facebook API key 3. Download met R code de KNMI data 4. Zoek de frequentie van relevante ijsjes termen op diverse media 5. Maak relevante plots en een lopend verhaal over de relatie tussen het weer ijsconsumptie
  • 38. Loops een relevante ijsjes termen Maak een lijst relevante termen maak eerst alle code voor 1 term Maak vervolgens een loop voor de collectie van termen (lapply) Maak een dataframe waarin je in de loop steeds een rbind doet van het resultaat aan een totaal dataframe waarover je de analyse doet
  • 39. Typische Tentamenvragen • Leg uit wat het verschil is tussen ELT en ELT? Welk effect op rekencapaciteit heeft dit? • Welke fases kent het ELT proces en wat gebeurt er in deze fases? • Geef 3 voorbeelden van messy data en leg uit hoe je met R deze weer tidy kun maken. • Leg uit wat een API is • Waarom is JSON wel en geen gestructureerd file type?
  • 40. https://www.youtube.com/watch?v=jyju2P- 7hPA&list=PLAwxTw4SYaPm4R6j_wzVOCV9fJaiQDYx4 LECTURE Volgende keer gaan te praten over datawarehouses. Ik verwacht dat je dan hfst 8 (was deze week) en 11 en 12 gelezen hebt. Blended learning tips • Zoek relevante flipjes over DHW en OLAP en ETL

Notas do Editor

  1. Doornemen categorieën. Connection time aanpassen
  2. Note: - session 6 is zero Made inviisble Merging short sessions into one session influences mean kWh per session and mean connection time per sesison since less sesions (of zero)