Skip to content
Snippets Groups Projects
Commit 6ced178c authored by Juliette Engelaere-Lefebvre's avatar Juliette Engelaere-Lefebvre
Browse files

Implémentation sauvegardes SGBD.

Le script export-sgbd peut rejoindre sgbd_datamart
parent 84a8f1f2
No related branches found
No related tags found
1 merge request!2creation d un script d export pour charger des donnees vers le sgbd
...@@ -13,8 +13,7 @@ load("data/OF_redresse.RData") ...@@ -13,8 +13,7 @@ load("data/OF_redresse.RData")
siclop_exploitation <- siclop_exploitation %>% siclop_exploitation <- siclop_exploitation %>%
passer_au_cog_a_jour(code_commune = code_commune, passer_au_cog_a_jour(code_commune = code_commune, aggrege = F) %>%
aggrege = F) %>%
select(-code_dpt, -REGIONS_DE_L_EPCI) %>% select(-code_dpt, -REGIONS_DE_L_EPCI) %>%
# cogifier( code_commune = DEPCOM) %>% ######new # cogifier( code_commune = DEPCOM) %>% ######new
filter(champ == "oui") %>% filter(champ == "oui") %>%
...@@ -428,3 +427,17 @@ siclop_hors_champ <- siclop_hors_champ %>% ...@@ -428,3 +427,17 @@ siclop_hors_champ <- siclop_hors_champ %>%
save.image("siclop_detail/shiny_siclop_complet.RData", version = 2) save.image("siclop_detail/shiny_siclop_complet.RData", version = 2)
#################### Versement dans le SGBD des données individuelles nettoyées et à jour du COG
poster_data(data = siclop_exploitation %>% select(-contains("_DE_L_EPCI")),
table = "dprep_siclop_exploitation", schema = "sial_siclop", db = "datamart", overwrite = TRUE)
commenter_table(table = "dprep_siclop_exploitation", schema = "sial_siclop", db = "datamart",
comment = "Table principale de données individuelles nettoyées portant sur les annonces de location de logements, prête pour le calcul d'indicateurs à visualiser dans l'app SICLOP grand pulic (dataframe siclop_exploitation).")
poster_data(data = siclop_hors_champ %>% select(-contains("_DE_L_EPCI")),
table = "dprep_siclop_hors_champ", schema = "sial_siclop", db = "datamart", overwrite = TRUE)
commenter_table(table = "dprep_siclop_exploitation", schema = "sial_siclop", db = "datamart",
comment = "Table secondaire de données individuelles nettoyées, portant sur les annonces hors champs (résidences service, garages, acquisition...) à visualiser dans l'app SICLOP intranet")
library(dplyr) library(dplyr)
library(tidyr) library(tidyr)
library(lubridate) library(lubridate)
library(datalibaba)
rm(list = ls()) rm(list = ls())
load("data/datamart.RData") siclop_exploitation <- importer_data(table = "dprep_siclop_exploitation", schema = "sial_siclop", db = "datamart")
# fonction de création des tables aux différents types de zonages----------------------- # fonction de création des tables aux différents types de zonages-----------------------
......
...@@ -5,25 +5,21 @@ library(DT) ...@@ -5,25 +5,21 @@ library(DT)
library(magrittr) library(magrittr)
library(purrr) library(purrr)
library(xml2) library(xml2)
library(datalibaba)
rm(list = ls()) rm(list = ls())
setwd("/home/rstudio/projets/SIAL_SICLOP/") setwd("/home/rstudio/projets/SIAL_SICLOP/")
load("data/OF.RData") load("data/OF.RData")
source("scripts/OF-fonctions.R") source("scripts/OF-fonctions.R")
nb_annonces_avant <- nrow(ListeAnnonces)
ListeAnnoncesNouvelles <- ListerLesAnnonces("https://www.ouestfrance-immo.com/immobilier/location/logement/pays-de-la-loire/?page=1") %>% ListeAnnoncesNouvelles <- ListerLesAnnonces("https://www.ouestfrance-immo.com/immobilier/location/logement/pays-de-la-loire/?page=1") %>%
mutate(id = str_replace(url, "/immobilier/location", "") %>% mutate(id = str_replace(url, "/immobilier/location", "") %>%
str_replace(".htm", "")) str_replace(".htm", "")) %>%
ListeAnnonces <- bind_rows(ListeAnnonces, dplyr::filter(!(url %in% unique(ListeAnnonces$url))) %>%
ListeAnnoncesNouvelles %>% distinct()
dplyr::filter(!(url %in% unique(ListeAnnonces$url)))
) %>%
mutate(id = str_replace(url, "/immobilier/location", "") %>%
str_replace(".htm", ""))
nb_annonces_nouvelles <- nrow(ListeAnnonces) - nb_annonces_avant ListeAnnonces <- bind_rows(ListeAnnonces, ListeAnnoncesNouvelles) %>%
rm(nb_annonces_avant) distinct()
# création de la liste des résultats # création de la liste des résultats
BaseAnnoncesNouvelles <- map_df(ListeAnnonces %>% BaseAnnoncesNouvelles <- map_df(ListeAnnonces %>%
...@@ -31,19 +27,39 @@ BaseAnnoncesNouvelles <- map_df(ListeAnnonces %>% ...@@ -31,19 +27,39 @@ BaseAnnoncesNouvelles <- map_df(ListeAnnonces %>%
select(url) %>% select(url) %>%
pull(), pull(),
possibly(~ LireAnnonce(.x), vm)) possibly(~ LireAnnonce(.x), vm))
BaseAnnonces <- bind_rows(BaseAnnonces, BaseAnnoncesNouvelles)
# # Chargement des parametres à transmettre au Rmd document # assemblage aux propriétés des anciennes annonces
# BaseAnnonces <- bind_rows(BaseAnnonces, BaseAnnoncesNouvelles)
# params_rapport <- list(date1=Sys.Date(), nb_annonces_nouvelles)
#
# rmarkdown::render("rapport.Rmd", output_file = "rapport.html",
# params = params
# #envir = new.env(parent = globalenv())
# )
save(BaseAnnonces, ListeAnnonces, vm, file = "data/OF.RData")
rm(BaseAnnoncesNouvelles, ListeAnnoncesNouvelles) # Poursuivre avec :
save.image("data/OF.RData")
# source("scripts/OF-nettoyerannonces.R") # source("scripts/OF-nettoyerannonces.R")
# source("scripts/OF-datamart.R") # source("scripts/OF-datamart.R")
## Export SGBD -----------
# Liste des annonces traitées
poster_data(data = ListeAnnonces, table = "dbrutes_liste_annonces", schema = "sial_siclop", pk = "id",
post_row_name = FALSE, db = "datamart", overwrite = TRUE)
# sauvegarde SGBD des seules nouvelles annonces
old_id_row__ <- nrow(BaseAnnonces) # recuperation de l'ancien index de ligne
BaseAnnoncesNouvelles_sgbd <- rowid_to_column(BaseAnnoncesNouvelles, var = "id_row__") %>%
# creation de l'index des proprietes des nouvelles annonces
mutate(id_row__ = id_row__ + old_id_row__)
con <- connect_to_db(db = "datamart")
DBI::sqlAppendTable(con = con, table = DBI::Id(schema = "sial_siclop", table = "dbrutes_base_annonces"),
values = BaseAnnoncesNouvelles_sgbd, row.names = FALSE) %>%
DBI::dbSendQuery(conn = con, statement = .)
DBI::dbDisconnect(con)
rm(con)
commenter_table(comment = "Base brute des annonces Ouest-France Immo collectées dans le cadre du projet SICLOP",
table = "dbrutes_base_annonces", schema = "sial_siclop")
# # initialisation de la base des propriétés des annonces dans le SGBD
# poster_data(data = BaseAnnonces, table = "dbrutes_base_annonces", schema = "sial_siclop",
# post_row_name = FALSE, db = "datamart", overwrite = TRUE)
...@@ -8,9 +8,16 @@ load("data/OF.RData") ...@@ -8,9 +8,16 @@ load("data/OF.RData")
# Table des quartiers # Table des quartiers
tab_quartiers <- read_excel("ref/tab_quartiers.xls", col_types = "text") # ouverture de la table de correspondance tab_quartiers <- read_excel("ref/tab_quartiers.xls", col_types = "text") # ouverture de la table de correspondance
# poster_data(tab_quartiers, table = "ref_quartiers", schema = "sial_siclop", pk = "Code_q",
# post_row_name = FALSE, db = "datamart", overwrite = TRUE)
# commenter_table("Référentiel des quartiers utilisés par Ouest France Immo", table = "ref_quartiers", schema = "sial_siclop", db = "datamart")
# Table des typo de logement/Permet de redresser le nombre de pièces # Table des typo de logement/Permet de redresser le nombre de pièces
tab_categories_de_biens <- read_excel("ref/tab_categories_de_biens.xls", col_types = c("text", "text", "text", "numeric")) # ouverture de la table de correspondance tab_categories_de_biens <- read_excel("ref/tab_categories_de_biens.xls", col_types = c("text", "text", "text", "numeric")) # ouverture de la table de correspondance
# poster_data(tab_categories_de_biens, table = "ref_categories_biens", schema = "sial_siclop", pk = "Code",
# post_row_name = FALSE, db = "datamart", overwrite = TRUE)
# commenter_table("Nomenclature des types de biens utilisés dans le cadre du projet SICLOP", table = "ref_quartiers", schema = "sial_siclop", db = "datamart")
# récupération des charges # récupération des charges
chargmax <- function(x, cut = 20) x[x < 100] # au delà de cette valeur, valeur supprimée, il peut s'agir de l'état des lieux chargmax <- function(x, cut = 20) x[x < 100] # au delà de cette valeur, valeur supprimée, il peut s'agir de l'état des lieux
...@@ -101,7 +108,7 @@ SICLOP_avant_redressement <- SICLOP_avant_redressement$id %>% ...@@ -101,7 +108,7 @@ SICLOP_avant_redressement <- SICLOP_avant_redressement$id %>%
# "chambre meublée avec surface habitable manquante ou <25 m2" # "chambre meublée avec surface habitable manquante ou <25 m2"
str_detect(tolower(description), "^.*(chambre meubl).*$") & (surf_habitable < 25 | is.na(surf_habitable)) ~ "autres", str_detect(tolower(description), "^.*(chambre meubl).*$") & (surf_habitable < 25 | is.na(surf_habitable)) ~ "autres",
# "accession" # "accession"
str_detect(tolower(description), "alur|aison en accession|devenir propriétaire|devenez propriétaire|mikit|1er achat|faire offre|accession sociale") | annonceur == "constructeur" ~ "accession", str_detect(tolower(description), "alur|aison en accession|devenir propriétaire|devenez propriétaire|mikit|1er achat|faire offre|accession sociale|charge de l'acquéreur") | annonceur == "constructeur" ~ "accession",
# autre hors champ detectable via la description # autre hors champ detectable via la description
str_detect(tolower(description), "local commercial|surface de vente|/ semaine|/semaine|saisonni|à la quinzaine|quinzaine dégressive") ~ "autres", str_detect(tolower(description), "local commercial|surface de vente|/ semaine|/semaine|saisonni|à la quinzaine|quinzaine dégressive") ~ "autres",
# classif = 2722 (chambres) # classif = 2722 (chambres)
...@@ -635,7 +642,8 @@ siclop_exploitation <- SICLOP_apres_redressement %>% ...@@ -635,7 +642,8 @@ siclop_exploitation <- SICLOP_apres_redressement %>%
surf_habitable, loyer_hc, charges, honoraires, numero_etage, stationnement, surf_habitable, loyer_hc, charges, honoraires, numero_etage, stationnement,
ascenseur, options_logement, presence_terrain, chauffage_mode, chauffage_type, ascenseur, options_logement, presence_terrain, chauffage_mode, chauffage_type,
performance_energetique, etiquette_energetique, precision_positionnement, performance_energetique, etiquette_energetique, precision_positionnement,
geom_point, champ)) geom_point, champ)) %>%
distinct()
siclop_hors_champ <- SICLOP_apres_redressement %>% siclop_hors_champ <- SICLOP_apres_redressement %>%
filter(champ != "oui") %>% filter(champ != "oui") %>%
...@@ -644,14 +652,14 @@ siclop_hors_champ <- SICLOP_apres_redressement %>% ...@@ -644,14 +652,14 @@ siclop_hors_champ <- SICLOP_apres_redressement %>%
surf_habitable, loyer_hc, charges, honoraires, numero_etage, stationnement, surf_habitable, loyer_hc, charges, honoraires, numero_etage, stationnement,
ascenseur, options_logement, presence_terrain, chauffage_mode, chauffage_type, ascenseur, options_logement, presence_terrain, chauffage_mode, chauffage_type,
performance_energetique, etiquette_energetique, precision_positionnement, performance_energetique, etiquette_energetique, precision_positionnement,
geom_point)) geom_point)) %>%
distinct()
nb_collecte_annonces <- BaseAnnonces %>% nb_collecte_annonces <- BaseAnnonces %>%
filter(var == "date") %>% filter(var == "date") %>%
group_by(val) %>% group_by(val) %>%
summarize(nb_annonces = n()) %>% summarize(nb_annonces = n()) %>%
mutate(val = dmy(val)) %>% mutate(val = dmy(val)) %>%
rename(date_annonce = val) %>% rename(date_annonce = val) %>%
arrange(date_annonce) arrange(date_annonce)
...@@ -659,3 +667,6 @@ nb_collecte_annonces <- BaseAnnonces %>% ...@@ -659,3 +667,6 @@ nb_collecte_annonces <- BaseAnnonces %>%
save(siclop_hors_champ, nb_collecte_annonces, file = "siclop_detail/OF_hors_champ.RData") save(siclop_hors_champ, nb_collecte_annonces, file = "siclop_detail/OF_hors_champ.RData")
save(siclop_exploitation, file = "data/OF_redresse.RData") save(siclop_exploitation, file = "data/OF_redresse.RData")
save(SICLOP_avant_redressement, file = "data/OF_non_redresse.RData") save(SICLOP_avant_redressement, file = "data/OF_non_redresse.RData")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment