Headers bij import CSV-bestanden

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Grimbeert
  • Registratie: November 2018
  • Laatst online: 04-09-2024
Mijn vraag
Ik weet niet of ik hier goed zit, maar ik heb de volgende vraag:
Voor een upgrade moet ik rapportages uitdraaien van de situatie voor en na de upgrade om een vergelijking te kunnen maken vanwege een migratie van bestanden.
Nu kan ik geen totaalrapportage uitdraaien en moet ik 38 verschillende rapportages exporteren. Dat zou op zich nog geen probleem zijn, maar bij het maken van de rapportages heeft men niet gelet op de headers. Deze lopen niet overal gelijk en vooral bij een bepaalde uitdraai verspringen ze behoorlijk.

Nu is het zo dat ik de uitdraaien ook als CSV-bestanden moet uitdraaien. Eén rapportage heeft namelijk meer dan 500K aan cellen in gebruik en wordt alleen maar als CSV-bestand ondersteund. Ik heb daarom besloten om alle rapportages als CSV-bestand uit te draaien.

Ik wil graag het volgende weten: ik kan, als alle bestanden CSV als extensie hebben, deze in één keer in een excelbestand importeren. Voor de rapportage na migratie is dat verder niet van belang omdat deze wel een totaalrapportage uit kan draaien.

Wat mij is opgevallen is dat, bij import van de 38 rapportages, de headers allemaal gelijk lijken te zijn getrokken. Kan iemand mij bevestigen dat de verspringende headers hier zowel qua plaats van kolom en de eronderstaande data allemaal op de juiste plek komen te staan? Dat lijkt me namelijk het geval te zijn.
Het lijkt alsof excel de eerste headers als uitgangspunt neemt en de rest van de rapportages daar ook onder laat vallen. Dus dat excel kijkt naar de header van de volgende rapportage (ongeacht waar die staat). In het geval van de afwijkende rapportage staat de info van kolom D nu op zijn plek onder kolom AH.

Ik wil er zeker van zijn dat de data niet versprongen is en dat Excel ook daadwerkelijk de data onder de identieke headers zet ook als die niet gelijk lopen qua volgorde. Klopt mijn veronderstelling?

Alvast bedankt voor het lezen en eventueel reageren!

Relevante software en hardware die ik gebruik
Microsoft Office LTSC Professional Plus 2021

Wat ik al gevonden of geprobeerd heb
Samenvoegen van 38 CSV-bestanden via Data (tab): Get data --> Get File --> Get Folder. Source.name gecheckt en gefilterd: data lijkt hier op juiste plek te staan.

Beste antwoord (via Grimbeert op 28-08-2024 16:02)


  • dixet
  • Registratie: Februari 2010
  • Laatst online: 26-06 21:14
Gefeliciteerd, je hebt je eerste Power Query gebouwd! Wanneer je via Data (tab): Get data --> Get File --> Get Folder meerdere CSV's importeert zal Excel daar een Power Query transformatie van maken.

Door te kiezen voor "combine" zal Excel op basis van de kolomnamen de gegevens bij elkaar zetten. Dat gaat dus goed. Hij lijkt inderdaad de kolommen te baseren op het eerste bestand. Als ik een testje doe met een bestand "filea.csv" met kolommen a,b,c en een tweede "fileb.csv" met kolommen c,a,d ziten in het eindresultaat alleen de kolommen a,b en c. Wel met de juiste waarden uit beide bestanden, maar zonder de waarden uit kolom d.

Als ik het eerste bestand filed.csv noem krijg ik juist de kolommen c,a en d. Het "eerste" bestand lijkt dus bepaald te worden op basis van de bestandsnaam.

Als je zeker wilt weten dat je de juiste kolommen hebt kan je zelf een extra CSV bestand maken zonder data maar met de kolommen die je wilt zien op de volgorde die je graag wilt. Dat bestand geef je dan zo'n naam dat deze alfabetisch als eerste wordt gezien.

De migratie lijkt dit niet zo'n heel belangrijke migratie te zijn als niet de moeite wordt genomen om de juiste controles vóóraf te definiëren en die mee te nemen in de migratie. Achteraf met data gaan klooien om een migratie te controleren is vragen om problemen.
Dus ook de disclaimer van mij: geen garantie over bovenstaande conclusie. Data controleer je door te meten en te tellen, niet door aannames te doen over de werking van een office tool O-)

Alle reacties


Acties:
  • +1 Henk 'm!

  • Christoxz
  • Registratie: Maart 2014
  • Laatst online: 06:18
Weet niet of ik het helemaal begrijp maar in kort je hebt meerdere CSV files, met vergelijkbare/dezelfde headers, maar niet altijd op de zelfde locatie?

Volgens mij kan je zo iets wel gangbaarder combineren met Power Query, wellicht zou je daar naar kunnen zoeken? Best pittig als je er nog nooit mee gewerkt heb, maar GPT kan er aardig bij helpen, en is daarnaast ook genoeg online over te vinden.

Mocht je kunnen programmeren, kan je natuurlijk ook redelijk makkelijk een script maken die alle CSV recht trekt, zodat deze gelijk zijn.

T.Net Creality 3D Printer Discord


Acties:
  • 0 Henk 'm!

  • Grimbeert
  • Registratie: November 2018
  • Laatst online: 04-09-2024
Hallo Christoxz,

Bedankt voor je reactie: ik heb inderdaad meerdere CSV-bestanden waarvan de headers veelal identiek zijn (zelfs dat niet), maar in een aantal gevallen lopen de kolommen niet gelijk.
Voorbeeld: het systeem geeft bij registratie een unieke code. Deze code staat bij vrijwel alle rapportages in kolom AH. Alleen bij rapportage #4 staat die kolom D.
Bij samenvoegen lijken de gegevens van kolom D uit rapportage #4 toch onder kolom AH te staan. Is dit iets dat Excel automatisch doet? Hoef ik dan niet meer met de kolommen te gaan slepen?

Helaas heb ik weinig tijd om me te verdiepen in Power Query. Het gaat om het valideren van de info: of alles is gemigreerd (absolute aantallen) en alle metadata op de juiste plek is meegekomen.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • dixet
  • Registratie: Februari 2010
  • Laatst online: 26-06 21:14
Gefeliciteerd, je hebt je eerste Power Query gebouwd! Wanneer je via Data (tab): Get data --> Get File --> Get Folder meerdere CSV's importeert zal Excel daar een Power Query transformatie van maken.

Door te kiezen voor "combine" zal Excel op basis van de kolomnamen de gegevens bij elkaar zetten. Dat gaat dus goed. Hij lijkt inderdaad de kolommen te baseren op het eerste bestand. Als ik een testje doe met een bestand "filea.csv" met kolommen a,b,c en een tweede "fileb.csv" met kolommen c,a,d ziten in het eindresultaat alleen de kolommen a,b en c. Wel met de juiste waarden uit beide bestanden, maar zonder de waarden uit kolom d.

Als ik het eerste bestand filed.csv noem krijg ik juist de kolommen c,a en d. Het "eerste" bestand lijkt dus bepaald te worden op basis van de bestandsnaam.

Als je zeker wilt weten dat je de juiste kolommen hebt kan je zelf een extra CSV bestand maken zonder data maar met de kolommen die je wilt zien op de volgorde die je graag wilt. Dat bestand geef je dan zo'n naam dat deze alfabetisch als eerste wordt gezien.

De migratie lijkt dit niet zo'n heel belangrijke migratie te zijn als niet de moeite wordt genomen om de juiste controles vóóraf te definiëren en die mee te nemen in de migratie. Achteraf met data gaan klooien om een migratie te controleren is vragen om problemen.
Dus ook de disclaimer van mij: geen garantie over bovenstaande conclusie. Data controleer je door te meten en te tellen, niet door aannames te doen over de werking van een office tool O-)

Acties:
  • +1 Henk 'm!

  • GRDavies75
  • Registratie: December 2014
  • Laatst online: 27-06 09:56

GRDavies75

PSN-id: GRDavies

Grimbeert schreef op woensdag 28 augustus 2024 @ 11:26:
Hallo Christoxz,

Bedankt voor je reactie: ik heb inderdaad meerdere CSV-bestanden waarvan de headers veelal identiek zijn (zelfs dat niet), maar in een aantal gevallen lopen de kolommen niet gelijk.
Voorbeeld: het systeem geeft bij registratie een unieke code. Deze code staat bij vrijwel alle rapportages in kolom AH. Alleen bij rapportage #4 staat die kolom D.
Bij samenvoegen lijken de gegevens van kolom D uit rapportage #4 toch onder kolom AH te staan. Is dit iets dat Excel automatisch doet? Hoef ik dan niet meer met de kolommen te gaan slepen?

Helaas heb ik weinig tijd om me te verdiepen in Power Query. Het gaat om het valideren van de info: of alles is gemigreerd (absolute aantallen) en alle metadata op de juiste plek is meegekomen.
Zonder de code te kunnen inzien is het lastig te bepalen waarom iets wel of niet goed gaat, maar de volgorde van de headers is niet zo'n probleem, omdat de gegenereerde code veelal hardcoded verwijzingen bevat. Wat wel noodzakelijk dat ze identiek zijn ergens in het bestand (zelfs case-sensitive geiljk), want daar is Power query heel slecht in. Het gaat / zou ook misgaan wanneer relevante data staat in een kolomnummer groter is dan het allereerste bestand, ook het aantal kolommen wordt bij de import ergens hardcoded opgeslagen.

Powerquery is een krachtige ETL-tool en ideaal voor juist dit soort klussen, maar heeft ook een ontzettende leercurve als je bronnen niet uniform zijn en daar moet ik @dixet gelijk in geven dat de oplossing is om de bronnen uniformiteit te laten aanleveren (, want dan heb je al gemerkt dat het een paar klikken betreft en je hebt je resultaat).

Acties:
  • 0 Henk 'm!

  • Grimbeert
  • Registratie: November 2018
  • Laatst online: 04-09-2024
@ Dixet: bedankt voor je antwoord! Dat is in feite wat ik wilde weten ... excel zet op basis van de eerste headers de data van de andere rapportages in de juiste kolom indien de headers gelijk zijn.
"De migratie lijkt dit niet zo'n heel belangrijke migratie te zijn als niet de moeite wordt genomen om de juiste controles vóóraf te definiëren en die mee te nemen in de migratie. Achteraf met data gaan klooien om een migratie te controleren is vragen om problemen.
Dus ook de disclaimer van mij: geen garantie over bovenstaande conclusie. Data controleer je door te meten en te tellen, niet door aannames te doen over de werking van een office tool O-) "
Breek me de bek niet open ... helaas geen onbelangrijke klus (archief van PZ)

@ GRDavies75: bedankt voor je input: je hebt gelijk dat dit uniform had moeten zijn, maar daar zit het probleem: Twee jaar geleden zijn die rapportages aangemaakt en daar is nooit meer iets aan gedaan. Dus aan blijven klooien met de oude meuk ...
Pagina: 1