Power Query Retravailler un fichier JSON avec PQ

Staple1600

XLDnaute Barbatruc
Bonjour

Pour faire suite à ma discussion : Carte choroplèthe, je cherche à manipuler un fichier *.json avec PowerQuery

J'arrive bien à faire les 1ères étapes
PowerQuery:
let
    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "year", "reg_code", "reg_name", "dep_code", "dep_name", "arrdep_code", "arrdep_name", "ze2020_code", "ze2020_name", "bv2012_code", "bv2012_name", "epci_code", "epci_name", "ept_code", "ept_name", "com_code", "com_current_code", "com_name", "com_name_upper", "com_name_lower", "com_area_code", "com_type", "ze2010_name", "ze2010_code", "com_cataeu2010_code", "com_cataeu2010_name", "com_uu2010_code", "com_uu2010_status", "com_au2010_code", "com_cateaav2020_code", "com_cateaav2020_name", "com_uu2020_code", "com_uu2020_status", "com_aav2020_code", "com_cv_code", "com_in_ctu", "com_siren_code", "com_is_mountain_area"}, {"Column1.geo_point_2d", "Column1.geo_shape", "Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_upper", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"}),
    #"Column1.geo_point_2d développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.geo_point_2d", {"lon", "lat"}, {"Column1.geo_point_2d.lon", "Column1.geo_point_2d.lat"}),
    #"Column1.geo_shape développé" = Table.ExpandRecordColumn(#"Column1.geo_point_2d développé", "Column1.geo_shape", {"type", "geometry", "properties"}, {"Column1.geo_shape.type", "Column1.geo_shape.geometry", "Column1.geo_shape.properties"}),
    #"Column1.geo_shape.geometry développé" = Table.ExpandRecordColumn(#"Column1.geo_shape développé", "Column1.geo_shape.geometry", {"coordinates", "type"}, {"Column1.geo_shape.geometry.coordinates", "Column1.geo_shape.geometry.type"})
in
    #"Column1.geo_shape.geometry développé"
Mais dans le tableau structuré, j'ai plusieurs colonnes avec comme valeurs : [List]

Je n'arrive pas à trouver quelles actions je dois choisir dans le ruban pour avoir dans le tableau Excel le fichier JSON correctement "interprété".

Ci-dessous le lien pour télécharger le fichier JSON ( 3 837 Ko)
fichier JSON
 
Dernière édition:

mromain

XLDnaute Barbatruc
Bonjour Staple, le forum,

Je t'avoue ne pas savoir comment s'y prendre via l'interface de PowerQuery...
Cependant, tu trouveras ci-dessous le code modifié avec une fonction permettant de transformer ces listes en coordonnées de points :
Code:
let
    fnExtractCoordinates = (list as list) =>
        let
            toRecords = List.Transform(list{0}, each [Longitude=_{0}, Latitude=_{1}]),
            toTable = Table.FromRecords(toRecords),
            changeTypes = Table.TransformColumnTypes(toTable,{{"Longitude", type number}, {"Latitude", type number}})
        in 
            changeTypes,

    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "year", "reg_code", "reg_name", "dep_code", "dep_name", "arrdep_code", "arrdep_name", "ze2020_code", "ze2020_name", "bv2012_code", "bv2012_name", "epci_code", "epci_name", "ept_code", "ept_name", "com_code", "com_current_code", "com_name", "com_name_upper", "com_name_lower", "com_area_code", "com_type", "ze2010_name", "ze2010_code", "com_cataeu2010_code", "com_cataeu2010_name", "com_uu2010_code", "com_uu2010_status", "com_au2010_code", "com_cateaav2020_code", "com_cateaav2020_name", "com_uu2020_code", "com_uu2020_status", "com_aav2020_code", "com_cv_code", "com_in_ctu", "com_siren_code", "com_is_mountain_area"}, {"Column1.geo_point_2d", "Column1.geo_shape", "Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_upper", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"}),
    #"Column1.geo_point_2d développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.geo_point_2d", {"lon", "lat"}, {"Column1.geo_point_2d.lon", "Column1.geo_point_2d.lat"}),
    #"Column1.geo_shape développé" = Table.ExpandRecordColumn(#"Column1.geo_point_2d développé", "Column1.geo_shape", {"type", "geometry", "properties"}, {"Column1.geo_shape.type", "Column1.geo_shape.geometry", "Column1.geo_shape.properties"}),
    #"Column1.geo_shape.geometry développé" = Table.ExpandRecordColumn(#"Column1.geo_shape développé", "Column1.geo_shape.geometry", {"coordinates", "type"}, {"Column1.geo_shape.geometry.coordinates", "Column1.geo_shape.geometry.type"}),
    ExtractCoordinates = Table.TransformColumns(#"Column1.geo_shape.geometry développé",{{"Column1.geo_shape.geometry.coordinates", fnExtractCoordinates, type table}})
in
    ExtractCoordinates

A+
 

Staple1600

XLDnaute Barbatruc
Bonsoir mromain

J'ai vu sur le ruban dans l'onglet Transformer/Colonne Texte/Analyser
Une liste déroulante XML/JSON
Idem dans Ajouter une colonne/A partir d'un fichier texte/Analyser/XML , JSON

Mais je ne sais pas comment ni quand l'utiliser.

Je vais essayer de ce pas ton code M
 

Amilo

XLDnaute Accro
Bonjour Staple1600, mromain, le forum,

Pouvez-vous tester comme suite :

- ajoutez une colonne personnalisée et insérez le code =Table.FromColumns({,,,,,,,,})
- indiquez entre chaque séparateur les noms de colonne contenant l'objet "List" en double cliquant sur celles-ci
- Supprimez ces dernières et développez la colonne ajoutée

Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@mromain
Je viens d'essayer voila ce que cela donne
esssaiJSON_PQ.PNG
Je ne sais pas pourquoi il trouve 9 erreurs

EDITION: Bonsoir @Amilo
Je vais essayer ton mode opératoire
(mais je suis pas sur d'avoir tout compris)
 

Amilo

XLDnaute Accro
Re,

J'ai compris que vous vouliez extraire les valeurs des colonnes dont l'objet est une "List"
Vous souhaitez extraire toutes les colonnes : Record et List ?

Edit : je viens de voir la dernière phrase de votre précédent message
Je regarde comment extraire les colonnes Record

Cordialement
 

Pièces jointes

  • Table.FromColumns({}).jpg
    Table.FromColumns({}).jpg
    300.3 KB · Affichages: 20

Staple1600

XLDnaute Barbatruc
Re

Voila mon dernier essai
(mais j'ai du loupé un truc)
PowerQuery:
let
    fnExtractCoordinates = (list as list) =>
        let
            toRecords = List.Transform(list{0}, each [Longitude=_{0}, Latitude=_{1}]),
            toTable = Table.FromRecords(toRecords),
            changeTypes = Table.TransformColumnTypes(toTable,{{"Longitude", type number}, {"Latitude", type number}})
        in
            changeTypes,

    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "dep_code", "dep_name", "com_current_code", "com_name_upper"}, {"Column1.geo_point_2d", "Column1.geo_shape", "Column1.dep_code", "Column1.dep_name", "Column1.com_current_code", "Column1.com_name_upper"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Column1 développé", "AJOUT_COL", each Table.FromColumns({[Column1.dep_code],[Column1.dep_name],[Column1.com_current_code]})),
    #"AJOUT_COL développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "AJOUT_COL", {"Column1", "Column2", "Column3"}, {"AJOUT_COL.Column1", "AJOUT_COL.Column2", "AJOUT_COL.Column3"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"AJOUT_COL développé",{"Column1.dep_code", "Column1.dep_name", "Column1.com_current_code"})
in
    #"Colonnes supprimées"
Car ici je ne prends pas toutes les colonnes dans l'étape Column1 développé et je n'obtiens pas le même résultat qu'avec le code original de mromain (message#2)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Donc avec ceci, j'ai 333 lignes dans mon tableau
PowerQuery:
let
    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "dep_code", "dep_name", "com_current_code", "com_name_upper"}, {"geo_point_2d", "geo_shape", "dep_code", "dep_name", "com_current_code", "com_name_upper"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Column1 développé", "Personnalisé", each Table.FromColumns({[dep_code],[dep_name],[com_current_code]})),
    #"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Personnalisé", {"Column1", "Column2", "Column3"}, {"Column1", "Column2", "Column3"}),
    #"geo_point_2d développé" = Table.ExpandRecordColumn(#"Personnalisé développé", "geo_point_2d", {"lon", "lat"}, {"lon", "lat"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"geo_point_2d développé",{"dep_code", "dep_name", "com_current_code"}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes supprimées",{"Column2", "Column1", "Column3", "com_name_upper", "lon", "lat", "geo_shape"}),
    #"Colonnes renommées" = Table.RenameColumns(#"Colonnes permutées",{{"Column2", "Département"}, {"Column1", "Code Département"}, {"Column3", "Code Postal"}, {"com_name_upper", "Commune"}, {"lon", "Longitude"}, {"lat", "Latitude"}}),
    #"Lignes triées" = Table.Sort(#"Colonnes renommées",{{"Commune", Order.Ascending}})
in
    #"Lignes triées"
Dans la dernière colonne, j'ai des [Record]
 
Dernière édition:

Amilo

XLDnaute Accro
Bonsoir @Staple1600 ,

J'ai compris ce que vous voulez mais en ayant cette fois testé avec le code ci-dessous, je constate que le contenu semble sans intérêt et pas certain que ce soit le résultat attendu. Au mieux, j'ai une colonne de texte avec Polygon ou Multipolygon

VB:
=Table.FromRecords({[geo_shape]})

Je ne maîtrise en tout cas pas assez les fichiers json ou Xml pour comprendre toutes les manipulations ou subtilités.

Sinon, je ne vois pas trop comment procéder..

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re

@Amilo
Ici ce fichier *.json est utilisé en cartographie
(cf la discussion que je cite dans mon 1er message)

Ce que j'essaie de faire c'est de rendre ce fichier lisible et d'obtenir toutes les données qui sont des latitudes et des longitudes.

Avec ce dernier code, je me rapproche assez du but
Code:
let
    fnExtractCoordinates = (list as list) =>
        let
            toRecords = List.Transform(list{0}, each [Longitude=_{0}, Latitude=_{1}]),
            toTable = Table.FromRecords(toRecords),
            changeTypes = Table.TransformColumnTypes(toTable,{{"Longitude", type number}, {"Latitude", type number}})
        in 
            changeTypes,

    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "year", "reg_code", "reg_name", "dep_code", "dep_name", "arrdep_code", "arrdep_name", "ze2020_code", "ze2020_name", "bv2012_code", "bv2012_name", "epci_code", "epci_name", "ept_code", "ept_name", "com_code", "com_current_code", "com_name", "com_name_upper", "com_name_lower", "com_area_code", "com_type", "ze2010_name", "ze2010_code", "com_cataeu2010_code", "com_cataeu2010_name", "com_uu2010_code", "com_uu2010_status", "com_au2010_code", "com_cateaav2020_code", "com_cateaav2020_name", "com_uu2020_code", "com_uu2020_status", "com_aav2020_code", "com_cv_code", "com_in_ctu", "com_siren_code", "com_is_mountain_area"}, {"Column1.geo_point_2d", "Column1.geo_shape", "Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_upper", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"}),
    #"Column1.geo_point_2d développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.geo_point_2d", {"lon", "lat"}, {"Column1.geo_point_2d.lon", "Column1.geo_point_2d.lat"}),
    #"Column1.geo_shape développé" = Table.ExpandRecordColumn(#"Column1.geo_point_2d développé", "Column1.geo_shape", {"type", "geometry", "properties"}, {"Column1.geo_shape.type", "Column1.geo_shape.geometry", "Column1.geo_shape.properties"}),
    #"Column1.geo_shape.geometry développé" = Table.ExpandRecordColumn(#"Column1.geo_shape développé", "Column1.geo_shape.geometry", {"coordinates", "type"}, {"Column1.geo_shape.geometry.coordinates", "Column1.geo_shape.geometry.type"}),
    ExtractCoordinates = Table.TransformColumns(#"Column1.geo_shape.geometry développé",{{"Column1.geo_shape.geometry.coordinates", fnExtractCoordinates, type table}}),
    #"Column1.geo_shape.geometry.coordinates développé" = Table.ExpandTableColumn(ExtractCoordinates, "Column1.geo_shape.geometry.coordinates", {"Longitude", "Latitude"}, {"Longitude", "Latitude"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Column1.geo_shape.geometry.coordinates développé", "Personnalisé", each Table.FromColumns({[Column1.dep_code],[Column1.dep_name],[Column1.com_current_code]})),
    #"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Personnalisé", {"Column1", "Column2", "Column3"}, {"Personnalisé.Column1", "Personnalisé.Column2", "Personnalisé.Column3"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Personnalisé développé",{"Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"})
in
    #"Colonnes supprimées"
 

mromain

XLDnaute Barbatruc
Bonjour Staple, Amilo, le forum,

Je ne me suis focalisé que sur la liste contenant les coordonnées définissant les formes (colonne Column1.geo_shape.geometry.coordinates).
Je ne sais pas pourquoi il trouve 9 erreurs
Cela vient du fait que certaines lignes (communes ?) contiennent plusieurs formes.
Il s'agit des 9 lignes dont le geo_shape.geometry.type vaut MultiPolygon (des communes en plusieurs morceaux ?).

Tu trouveras le code ci-dessous retouché qui permet d'extraire l'ensemble des formes. On se retrouve alors avec 85 450 lignes chargées et 0 erreurs.
Code:
let
    fnExtractShapesCoordinates = (list as list) =>
        let
            fnExtractPointsCoordinates = (list as list) => List.Transform(list{1}{0}, each [ShapeID = list{0}, Longitude=_{0}, Latitude=_{1}]),
            shapesList = let listCount = List.Count(list) in if listCount = 1 then {{1, list}} else List.Zip({{1 .. listCount}, list}),
            shapeCoordinates = List.Combine(List.Transform(shapesList, fnExtractPointsCoordinates)),
            toTable = Table.FromRecords(shapeCoordinates),
            changeTypes = Table.TransformColumnTypes(toTable,{{"ShapeID", Int64.Type}, {"Longitude", type number}, {"Latitude", type number}})
        in
            changeTypes,

    Source = Json.Document(File.Contents("C:\Users\STAPLE\Documents\communes-france.json")),
    #"Converti en table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"geo_point_2d", "geo_shape", "year", "reg_code", "reg_name", "dep_code", "dep_name", "arrdep_code", "arrdep_name", "ze2020_code", "ze2020_name", "bv2012_code", "bv2012_name", "epci_code", "epci_name", "ept_code", "ept_name", "com_code", "com_current_code", "com_name", "com_name_upper", "com_name_lower", "com_area_code", "com_type", "ze2010_name", "ze2010_code", "com_cataeu2010_code", "com_cataeu2010_name", "com_uu2010_code", "com_uu2010_status", "com_au2010_code", "com_cateaav2020_code", "com_cateaav2020_name", "com_uu2020_code", "com_uu2020_status", "com_aav2020_code", "com_cv_code", "com_in_ctu", "com_siren_code", "com_is_mountain_area"}, {"Column1.geo_point_2d", "Column1.geo_shape", "Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_upper", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"}),
    #"Column1.geo_point_2d développé" = Table.ExpandRecordColumn(#"Column1 développé", "Column1.geo_point_2d", {"lon", "lat"}, {"Column1.geo_point_2d.lon", "Column1.geo_point_2d.lat"}),
    #"Column1.geo_shape développé" = Table.ExpandRecordColumn(#"Column1.geo_point_2d développé", "Column1.geo_shape", {"type", "geometry", "properties"}, {"Column1.geo_shape.type", "Column1.geo_shape.geometry", "Column1.geo_shape.properties"}),
    #"Column1.geo_shape.geometry développé" = Table.ExpandRecordColumn(#"Column1.geo_shape développé", "Column1.geo_shape.geometry", {"coordinates", "type"}, {"Column1.geo_shape.geometry.coordinates", "Column1.geo_shape.geometry.type"}),
    ExtractCoordinates = Table.TransformColumns(#"Column1.geo_shape.geometry développé",{{"Column1.geo_shape.geometry.coordinates", fnExtractShapesCoordinates, type table}}),
    #"Column1.geo_shape.geometry.coordinates développé" = Table.ExpandTableColumn(ExtractCoordinates, "Column1.geo_shape.geometry.coordinates", {"ShapeID", "Longitude", "Latitude"}, {"ShapeID", "Longitude", "Latitude"}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Column1.geo_shape.geometry.coordinates développé", "Personnalisé", each Table.FromColumns({[Column1.dep_code],[Column1.dep_name],[Column1.com_current_code]})),
    #"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Personnalisé", {"Column1", "Column2", "Column3"}, {"Personnalisé.Column1", "Personnalisé.Column2", "Personnalisé.Column3"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Personnalisé développé",{"Column1.year", "Column1.reg_code", "Column1.reg_name", "Column1.dep_code", "Column1.dep_name", "Column1.arrdep_code", "Column1.arrdep_name", "Column1.ze2020_code", "Column1.ze2020_name", "Column1.bv2012_code", "Column1.bv2012_name", "Column1.epci_code", "Column1.epci_name", "Column1.ept_code", "Column1.ept_name", "Column1.com_code", "Column1.com_current_code", "Column1.com_name", "Column1.com_name_lower", "Column1.com_area_code", "Column1.com_type", "Column1.ze2010_name", "Column1.ze2010_code", "Column1.com_cataeu2010_code", "Column1.com_cataeu2010_name", "Column1.com_uu2010_code", "Column1.com_uu2010_status", "Column1.com_au2010_code", "Column1.com_cateaav2020_code", "Column1.com_cateaav2020_name", "Column1.com_uu2020_code", "Column1.com_uu2020_status", "Column1.com_aav2020_code", "Column1.com_cv_code", "Column1.com_in_ctu", "Column1.com_siren_code", "Column1.com_is_mountain_area"})
in
    #"Colonnes supprimées"

Par rapport à la précédente proposition, la fonction renvoie un ShapeID en plus de la Longitude et de la Latitude.
Par exemple, la ligne n° 33 du fichier json est de type MultiPolygon. Elle contient 6 polygones. La fonction renverra donc les coordonnes des 6 formes (de ShapeID=1 à ShapeID=6).

En espérant que ça t'aide...

A+
 

klin89

XLDnaute Accro
Bonsoir à tous 🙂

Moi aussi, je me casse les dents sur un fichier JSON, export d'un fichier openstreetmap via une requête overpass turbo
Staple1600, dans Power Query, pourquoi tu ne cliques pas sur la double flèche avant de charger dans ta feuille.
Sur le coup, pas trop compris ta demande 🙁
StapPQ.jpg


Je suis en plein apprentissage, klin89
 

mromain

XLDnaute Barbatruc
Bonjour à tous,

@klin89
Staple1600, dans Power Query, pourquoi tu ne cliques pas sur la double flèche avant de charger dans ta feuille.
Sur le coup, pas trop compris ta demande

Effectivement, la double flèche permet d'extraire les éléments (d'une liste, d'un record ou d'une table) mais lorsque toutes les données de la colonne sont consistantes. Comme sur ton screenshot avec la colonne dep_code contenant, pour toutes les lignes, une liste composée de 1 élément : le numéro du département.

Ce que cherchait à récupérer @Staple1600 (je me permet de parler à sa place ;)) était les coordonnées des différents points définissant les formes des communes (sur la colonne geo_shape.geometry.coordinates).
Or, pour cette colonne, les données de toutes les lignes n'était pas consistantes. D'où la difficulté (l'impossibilité ?) de récupérer ces informations via l'interface avec la double flèche...

Moi aussi, je me casse les dents sur un fichier JSON, export d'un fichier openstreetmap via une requête overpass turbo

N'hésite pas à ouvrir un fil si besoin :)

A+
 

Statistiques des forums

Discussions
311 709
Messages
2 081 754
Membres
101 812
dernier inscrit
trufu