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

bug fix get_data() : en cas de clé primaire déclarée sur des variables qui...

bug fix get_data() : en cas de clé primaire déclarée sur des variables qui n'étaient pas au début, l'ordre des colonnes différait entre R et postgis, et le rajout du champ geometry en fin de df perturbait le renommage
parent 778737cb
No related branches found
No related tags found
No related merge requests found
Pipeline #58793 passed
...@@ -99,7 +99,7 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server ...@@ -99,7 +99,7 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server
} else { } else {
sql_query <- paste0("SELECT unnest(df_def[1:1]) as nms, unnest(df_def[2:2]) as defs, unnest(df_def[3:3]) as atts, unnest(df_def[4:4]) as r_nms FROM ", sql_query <- paste0("SELECT unnest(df_def[1:1]) as nms, unnest(df_def[2:2]) as defs, unnest(df_def[3:3]) as atts, unnest(df_def[4:4]) as r_nms FROM ",
schema, ".\"zz_r_df_def\" WHERE table_nm = '", table, "';") schema, ".\"zz_r_df_def\" WHERE table_nm = '", table, "';")
defs <- dbGetQuery(conn = con, sql_query) defs <- DBI::dbGetQuery(conn = con, sql_query)
} }
} else { } else {
message("La table de propri\u00e9t\u00e9s des dataframes R est introuvable, un import standard sera r\u00e9alis\u00e9. ") message("La table de propri\u00e9t\u00e9s des dataframes R est introuvable, un import standard sera r\u00e9alis\u00e9. ")
...@@ -107,11 +107,11 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server ...@@ -107,11 +107,11 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server
defs = data.frame() defs = data.frame()
} }
# on distingue 3 cas : table geo, table de donnees chargee avec poster_data(), table de donnees chargees autrement # on distingue 2 cas : table geo, table de donnees
if(any(grepl("USER-DEFINED", champs$data_type))) { # la signature des champs de geometry if(any(grepl("USER-DEFINED", champs$data_type))) { # la signature des champs de geometry
data_sf <- sf::st_read(dsn = con, layer = c(schema, table)) data_sf <- sf::st_read(dsn = con, layer = c(schema, table))
if ("id_row__" %in% champs$column_name) { # on enleve le champ de cle primaire eventuellement cree if ("id_row__" %in% champs$column_name) { # on enleve le champ de cle primaire eventuellement cree après avoir remis dans l'ordre les enregistrements
data_sf <- dplyr::arrange(.data = data_sf, .data$id_row__) %>% data_sf <- dplyr::arrange(.data = data_sf, .data$id_row__) %>%
dplyr::select(-.data$id_row__) dplyr::select(-.data$id_row__)
} }
...@@ -126,7 +126,7 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server ...@@ -126,7 +126,7 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server
} }
} }
# repasser les noms de lignes en noms de lignes de dataset # repasser les éventuelle noms de lignes en noms de lignes de dataset
if ("r_row_names__" %in% champs$column_name) { if ("r_row_names__" %in% champs$column_name) {
data <- tibble::column_to_rownames(.data = data, var = "r_row_names__") data <- tibble::column_to_rownames(.data = data, var = "r_row_names__")
defs <- dplyr::filter(defs, .data$nms != "r_row_names__") defs <- dplyr::filter(defs, .data$nms != "r_row_names__")
...@@ -169,12 +169,13 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server ...@@ -169,12 +169,13 @@ importer_data <- function(table = NULL, schema = NULL, db = "production", server
} }
} }
# remettre le champ geometrie # remettre le champ geometrie (au bon endroit)
if(exists("data_sf")) { if(exists("data_sf")) {
sf::st_geometry(data) <- sf::st_geometry(data_sf) sf::st_geometry(data) <- sf::st_geometry(data_sf)
data <- dplyr::select(data, dplyr::all_of(defs$nms))
} }
# renommer avec les éventuels noms initiaux # renommer avec les éventuels noms initiaux
if(nrow(def_table) > 0) { if(nrow(def_table) > 0) {
data <- dplyr::select(data, dplyr::all_of(defs$nms)) data <- dplyr::select(data, dplyr::all_of(defs$nms))
names(data) <- defs$r_nms names(data) <- defs$r_nms
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment