Nothing Special   »   [go: up one dir, main page]

Py Gram ETL

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

import psycopg2

Chargement des
import pygrametl packages nécessaires

from pygrametl.datasources import CSVSource

from pygrametl.tables import Dimension, FactTable

pgconn = psycopg2.connect(dbname='SecuriteRoutiere',user='postgres', password='0000')

connection = pygrametl.ConnectionWrapper(pgconn)

connection.setasdefault() Connexion avec le


DataMart
connection.execute('set search_path to "SecuriteRoutiere"')

print('connexion établie')

accident_file_handle = open('accidentsdelaroute.csv', 'r', 16384)

AccidentSource = CSVSource(accident_file_handle, delimiter=';') Sélection et récupération


des données sources
print('lecture du fichier réussi')

# Création des dimensions et la table des Faits selon les schémas du DW

TempsDebutEv_dimension = Dimension(

name='TempsDebutEv',

key='id_TempsD',

attributes=['moisTempsD', 'anneeTempsD'])

Location_dimension = Dimension(

name='LocationA',

key='id_Location',

attributes=['Rue','Codemunicipal'])

Evenement_dimension = Dimension(
Reproduction du schéma
name='Evenement', du datawarehouse
key='id_Evenement',

attributes=['nombrePersonneEv'])

Accident_Fact = FactTable(

name='Accident',

keyrefs=['id_Location', 'id_Evenement', 'id_TempsD'],

measures=['montantDommage'])
Définition des fonctions
de Transformation
# La phase de transformation

def transformerDate(row):

"""Subdivise la date en jour, mois et année"""

date = row['DateDebutInfraction']

date_split = date.split('/')

# Récupérer chaque élément à part et le rajouter dans le dictionnaire

row['anneeTempsD'] = date_split[2]

print('annee :' + row['anneeTempsD'])

row['moisTempsD'] = date_split[1]
Extraction
for row in AccidentSource:

print(row)

row['id_TempsD']=row['DateDebutInfraction']
Transformation
#

transformerDate(row)
Chargement de la
row['id_TempsD'] = TempsDebutEv_dimension.ensure(row)
dimension
« TempsDebutEv »

row['id_Evenement']=row['Numerodevenement']

row['nombrePersonneEv'] = pygrametl.getint(row['Nombredepersonnesaudossier'])

row['id_Evenement'] = Evenement_dimension.ensure(row)

row['id_Location'] = row['Rue']+row['Codemunicipal']

Location_dimension.ensure(row)

row['montantDommage']=pygrametl.getint(row['montantDommage'])

## # The row can then be inserted into the fact table


Chargement de la table
Accident_Fact.ensure(row)
des faits
# The data warehouse connexion is then ordered to commit and close « AccidentFact »
connection.commit()

connection.close()

pgconn.close()

Vous aimerez peut-être aussi