Ouvrir un Csv trop volumineux + faire des requêtes [Résolu]

Signaler
-
 julien002 -
Bonsoir,

J'ai 3 csv trop volumineux (un csv à plus de 25 millions de ligne).

J'ai besoin de les ouvrir pour faire une requête simple qui consiste à connaître le nombre de fois où des entreprises sont présentes dans une colonne.

Cependant je ne sais pas par quel moyen ouvrir les documents et faire cette requête.

Excel ne permet pas d'ouvrir des fichiers trop volumineux et je n'ai pas de connaissance en programmation et base de données.

Vous avez une solution ? Merci d'avance

Julien

5 réponses

Messages postés
23594
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
6 422
Bonjour,

avec une version récente d'"excel tu peux aller dans 'Données / A partir d'un fichier texte/CSV' pour le traiter avec Power Query.
Importes ton fichier, en bas bouton 'Transformer les données'.
Sélectionne ta colonne et 'Regrouper par' et tu valides.
Clic-droit sur les colonnes du tableau si tu veux ajouter des traitements, sinon 'Fermer et charger' pour récupérer ton tableau dans une feuille.
eric
Bonjour,

J'aurai une dernière demande.

Grâce à Eric, j'ai pu récupérer le nombre d'occurrences des valeurs présentes dans une colonne.

Je voudrais refaire la même chose après avoir fait un filtre dans une autre colonne. En gros dans une autre colonne il y a des dates au format jj/mm/AA. J'aimerai garder les valeurs de 2019 et ensuite refaire le process pour récupérer le nombre d'occurrences dans une colonne.

Merci d'avance

Julien
Messages postés
23594
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
6 422 > Julien002
Bonjour,

si tu veux qu'on teste dépose un csv avec quelque valeurs bidons.
cjoint.com et coller ici le le lien fourni.
eric
Messages postés
29879
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
25 octobre 2020
6 868
Bonjour,

Excel est limité à un peu plus d'un million de lignes.

Voir avec Access.
Merci beaucoup à vous deux.

Powerquery a répondu à mes attentes !
Bonjour Eric,

Vous trouverez ci dessous le lien avec des données bidons :
https://www.cjoint.com/c/JFvnfS7RuAH

Ma requête serait de garder uniquement les lignes où il y a "19" dans la colonne "date" et de récupérer les nombres d'occurrences des valeurs présentes dans la colonne "Entreprise".

Merci d'avance

Julien
Messages postés
29879
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
25 octobre 2020
6 868
Je ne connaissais pas Power Query dans Excel. Comme tout outil il doit falloir se former sur les bases avant d'attaquer.

https://docs.microsoft.com/fr-fr/powerquery-m/

Voilà ce que j'ai appliqué, suivant les indications d'eriiic, dans Excel 2016 : Données/Nouvelle requete/A partir d'un fichier/fichier CSV, donner emplacement fichier csv
Une fois le fichier présenté cliquer Modifier
Sur la 1ere date, clic-droit/filtre chronologique/Postérieur ou égal, cela génère une requete dans le bloc de droite "lignes filtrées", cliquer sur ce nom de requete, on peut alors faire une selection >=01/01/2019 et <01/01/2020, on a alors tout 2019
Dans la barre de menu "Regrouper par" / Entreprise/Nombre/Compter

Puis fermer et charger, on a alors le résultat dans excel :
Entreprise Nombre
Apple   2
Cisco   1
Microsoft  1


Et si on revient dans PQ, sur "Editeur avancé", on obtient la requete, où on retrouve la selection et le regroupement. Il faudrait, je pense, apprendre le langage pour les besoins plus évolués, non couverts par les requetes guidées

let
    Source = Csv.Document(File.Contents("D:\JFvnfS7RuAH_test.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Entreprise", type text}, {"Date", type date}, {"Ville", type text}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each [Date] >= #date(2019, 1, 1) and [Date] < #date(2020, 1, 1)),
    #"Lignes groupées" = Table.Group(#"Lignes filtrées", {"Entreprise"}, {{"Nombre", each Table.RowCount(_), type number}})
in
    #"Lignes groupées"


En important une nouvelle fois le fichier CSV et appliquant dans "Editeur Avancé" le code ci-dessus, on obtient le résultat sans passer par les étapes guidées. Le code est donc transportable.
Messages postés
23594
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
6 422 >
Messages postés
29879
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
25 octobre 2020

Bonjour,

en fait la requête est enregistrée dans le classeur où on a ramené le tableau.
Il suffit de rouvrir ce classeur et de l'afficher avec 'Données / Requêtes et connexions'.
Puis clic-droit dessus et 'Charger dans...' pour la relancer
eric
Merci beaucoup à vous deux, j'ai pu récupérer mes données !