• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

In de bron nieuwe velden (kolommen) +Power Query

Omteleren

Gebruiker
Lid geworden
12 nov 2011
Berichten
225
Er is een platte tabel middels een .csv bestand ingeladen, deze is met 230 kolommen. Nu zijn er 5 nieuwe kolommen bijgekomen.
Hoe kan ik deze het beste toevoegen. Moet dit via de aangepaste editor of kan het nog op een andere manier
 
Als het goed is staat ergens in de Bron= ..... dit " Columns=230, "
Haal dat eens weg. Of maak er 235 van.
 
Hoi Peter, Dit werkt. brontabel werkt. Ik heb nog wel veel uitroeptekens in de andere selecties.
In alle andere selecties moet ik ook het aantal vervangen. Helaas heb ik de bron niet in de hand.
Het moet op ongeveer 10 selecties worden aangepast en dan weer de juiste data. Kan dit in de toekomst dynamisch worden gemaakt. Peter tevens mijn grote dank voor je hulp.
 
Laatst bewerkt:
Zou je de betreffende M-codes hier kunnen plaatsen, zodat ik of iemand anders er gericht naar kan kijken?
 
Ik heb de 230 veldnamen weggelaten en de verkorte code weergegeven:
De import geschiedt via een .csv bestand. De bron wordt vaak gedupliceerd en data getransformeert, dit om de juiste data er uit te halen. De import is een grote tabel met veel kolommen en regels.
Er komen nieuwe kolommen bij en vervolgens moeten veel selecties het aantal kolommen aangepast te worden., anders krijg je een uitroepteken. Bij importeren worden er nog wel een aantal kolommen getransformeert in tekst (omdat getal en tekst in kolom staat). Geen importfouten meer. De vraag is hoe ga je om als er nieuwe kolommen worden toegevoegd en je gebruikt vaak deze gegevens.
Code:
let
    Bron = Csv.Document(File.Contents("C:\Users\bestand_01.CSV"),[Delimiter=";", Columns=236, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Headers met verhoogd niveau" = Table.PromoteHeaders(Bron, [PromoteAllScalars=true]),
    #"Type gewijzigd" = Table.TransformColumnTypes(#"Headers met verhoogd niveau",{{"RESULT_ID", Int64.Type}, {"RESULT_PERSON_ID", Int64.Type},
in
    #"Type gewijzigd"
 
Laatst bewerkt:
In je code staat nog steeds “Columns=236” vast ingesteld.
Probeer deze code eens en kijk eens waar het verschil zit.
Code:
let
    Bron = Csv.Document(
        File.Contents("C:\Users\bestand_01.CSV"),
        [Delimiter=";", Encoding=1252, QuoteStyle=QuoteStyle.None]
    ),
    #"Headers met verhoogd niveau" = Table.PromoteHeaders(Bron, [PromoteAllScalars=true]),

    Kolommen = Table.ColumnNames(#"Headers met verhoogd niveau"),

    TypeLijst = List.Select(
        {
            {"RESULT_ID", Int64.Type},
            {"RESULT_PERSON_ID", Int64.Type}
        },
        each List.Contains(Kolommen, _{0})
    ),

    #"Type gewijzigd" = Table.TransformColumnTypes(#"Headers met verhoogd niveau", TypeLijst)
in
    #"Type gewijzigd"
 
Peter, klasse het werkt. De gegevens worden ingeladen met deze code.
Als ik dit aanpas, gaat het in de toekomst goed. Als ik het goed begrijp is de eerste kolom nu ingesteld als header.
 
Als ik het goed begrijp is de eerste kolom nu ingesteld als header.
Nee, dat is de 2de stap in je query dus dat blijft zo. Hierna ga je in de 3de stap de type's wijzigen van de kolommen welke hard gecodeerd zijn en dan krijg je dus een error. Zie onderstaand.

Code:
    TypeLijst = List.Select(
        {
            {"RESULT_ID", Int64.Type},
            {"RESULT_PERSON_ID", Int64.Type}
        },
        each List.Contains(Kolommen, _{0})
    ),

Dit stukje is toegevoegd om het geheel dynamischer te maken, omdat in je code de kolommen voor het wijzigen van het type hard gecodeerd waren. Als deze kolommen na een nieuwe upload niet in de nieuwe lijst voorkomen, wordt het type niet gewijzigd. Anders zou je in de query een foutmelding krijgen.

Ik hoop dat het zo wel een beetje duidelijk is.
 
Terug
Bovenaan Onderaan