Unstacking Rows into Columns - Using M Code in Power Query

Поділитися
Вставка
  • Опубліковано 16 кві 2023
  • Check out our newly launched M Language course ↗️ - goodly.co.in/learn-m-powerquery/
    In this video, we will discuss a slick & efficient way to unstack rows in separate columns using M Code in Power Query
    ===== ONLINE COURSES =====
    ✔️ Mastering DAX in Power BI -
    goodly.co.in/learn-dax-powerbi/
    ✔️ Power Query Course-
    goodly.co.in/learn-power-query/
    ✔️ Master Excel Step by Step-
    goodly.co.in/learn-excel/
    ✔️ Business Intelligence Dashboards-
    goodly.co.in/learn-excel-dash...
    ===== LINKS 🔗 =====
    Blog 📰 - www.goodly.co.in/blog/
    Corporate Training 👨‍🏫 - www.goodly.co.in/training/
    Need my help on a Project 💻- www.goodly.co.in/consulting/
    Download File ⬇️ - goodly.co.in/unstacking-rows-...
    ===== CONTACT 🌐 =====
    Twitter - / chandeep2786
    LinkedIn - / chandeepchhabra
    Email - goodly.wordpress@gmail.com
    ===== WHO AM I? =====
    A lot of people think that my name is Goodly, it's NOT ;)
    My name is Chandeep. Goodly is my full-time venture where I share what I learn about Excel and Power BI.
    Please browse around, you'd find a ton of interesting videos that I have created :) Cheers!
  • Наука та технологія

КОМЕНТАРІ • 87

  • @damionc
    @damionc Рік тому +16

    Where do you learn this stuff? As usual mind blown.

    • @joedi
      @joedi Рік тому

      I’ve seen this pattern in Matt Allington’s work but Chandeep has so much more to share. The bro rocks!

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +5

      All thanks to the shitty data that work with. 😀

  • @wayneedmondson1065
    @wayneedmondson1065 Рік тому +7

    Good one Chandeep. After List.Split, I used Table.FromRows, as in:
    let
    Source = Excel.CurrentWorkbook(){[Name="Table18"]}[Content],
    ListBucket = List.Split(Source[Data],4),
    MakeTable = Table.FromRows(ListBucket,{"Name","City","Age","Phone"})
    in
    MakeTable
    Just another approach. Thumbs up!!

    • @user-mma173
      @user-mma173 Рік тому +1

      Yes, this is better.

    • @joneskiller8
      @joneskiller8 Рік тому +1

      💛Thank! I was scratching my head why isn't he using a Table.FromRows function, there has to be one!

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +3

      I tried using Table.FromRows but at the time of recording the video it returned some stupid error so I switched to creating a record and then a table. But I agree.. that is shorter approach.
      Thanks a lot!

  • @mostafayeganeh6862
    @mostafayeganeh6862 Місяць тому

    Thanks so much, borther! It is really helpful.

  • @guilouback
    @guilouback Рік тому

    man, you make sooooo usable tutorials. thank you!

  • @stretch233
    @stretch233 Рік тому

    Brilliant as usual! I just had this type of data problem come my way so I’m glad I could use the M code version to solve it, thanks Chandeep!

  • @andrewsinha2785
    @andrewsinha2785 Рік тому

    Peace and love to you. Thanks and good luck in your life.

  • @willm7994
    @willm7994 Рік тому

    Dude Thank You!!!!! 😀😃😀 looking for this solution for a while thanks !!!!

  • @christophertauss3640
    @christophertauss3640 Рік тому

    Very cool - both methods, but, of course, I was really impressed with the M code method. Great explanation and a great demo of how M code can easily process lists and tables. M Code, though not initially all that intuitive, is amazing in its elegance and what it can do. Well done, Microsoft and thanks for the great presentation, Goodly. You make me very glad that I am a subscriber.

  • @shrirajdeshpande8125
    @shrirajdeshpande8125 Рік тому

    Always comes up with super fantastic approaches

  • @m.raedallulu4166
    @m.raedallulu4166 Рік тому

    Beautifully Professional !

  • @KuldeepSingh-nq1vi
    @KuldeepSingh-nq1vi Рік тому

    You are really champ of Power Query❤❤❤

  • @Luciano_mp
    @Luciano_mp Рік тому

    Thank you!👍

  • @abhijeetshetye3764
    @abhijeetshetye3764 Рік тому

    Again amazing video sir… thank you 😊

  • @sabarirajagopalan9688
    @sabarirajagopalan9688 Рік тому

    You are just awesome 🎉

  • @007lbp
    @007lbp Рік тому

    Fantastic!

  • @megabuilds3007
    @megabuilds3007 Рік тому

    Great, Thank you.

  • @arne.munther
    @arne.munther Рік тому

    Would love to see you solve more of these problems.
    Here I am thinging of the ones in Chapther 13 of the book Master you data.

  • @danishnawaz7504
    @danishnawaz7504 Рік тому

    Excellent, Plz post maximum videos on Power Query Vidoe..

  • @rrrraaaacccc80
    @rrrraaaacccc80 10 місяців тому

    Excellent 💯👍

  • @PavanKumar-vi7hd
    @PavanKumar-vi7hd Рік тому

    Great Video Chandeep

  • @TheMoh148
    @TheMoh148 Рік тому

    Many thanks Chandeep.
    You can do it in two steps only
    List.Split & Table.FromRows
    Regards
    Mohammed from Algeria

  • @PurplePegasus2531
    @PurplePegasus2531 Рік тому

    Omg I literally have a project I can use thus solution for right now!!!!

  • @josh_excel
    @josh_excel Рік тому

    I tried doing something equivalent using some different formulas and I agree this seems to be the most efficient approach. It is possible to include the types in the Table.FromRecords step, but since the data is text, it won't properly convert it, so you'll need a separate step to convert to the correct data types.

    • @josh_excel
      @josh_excel Рік тому

      let
      Source = null,
      T1 = #table({"Data"},{{"John Smith"}, {" 32"}, {" 1989-07-15"}, {" New York City"}, {"Maria Garcia"}, {" 25"}, {" 1996-02-23"}, {" Los Angeles"}, {"David Lee"}, {" 46"}, {" 1977-09-01"}, {" San Francisco"}, {"Emily Chen"}, {" 19"}, {" 2004-05-10"}, {" Toronto"}, {"Mark Johnson"}, {" 56"}, {" 1967-12-28"}, {" Chicago"}, {"Samantha Wilson"}, {" 41"}, {" 1982-06-18"}, {" London"}, {"Robert Nguyen"}, {" 28"}, {" 1995-11-07"}, {" Houston"}, {"Karen Davis"}, {" 37"}, {" 1984-03-29"}, {" Sydney"}, {"Michael Brown"}, {" 63"}, {" 1958-10-12"}, {" Miami"}, {"Grace Kim"}, {" 22"}, {" 2001-01-09"}, {" Seoul"}}),
      Custom1 = Table.FromRecords(List.Transform(List.Split(T1[Data],4), each Record.FromList(_, {"Name", "Age", "BDay", "City"}))),
      #"Changed Type" = Table.TransformColumnTypes(Custom1,{{"Name", type text}, {"Age", Int64.Type}, {"BDay", type date}, {"City", type text}})
      in
      #"Changed Type"

  • @Chris_in_fremantle
    @Chris_in_fremantle Рік тому

    Very clever.👍

  • @saikumarboga3383
    @saikumarboga3383 Рік тому +1

    Hi, video is mind blowing, suppose if column is sorted like all texts are in upper records and all the numbers are started from end of text values, how to get the sort order which shown in the video from that?

  • @tecwzrd
    @tecwzrd Рік тому +2

    Love the Power Query tutorial. Using the TRANSPOSE formula also would have been a quick way to get the vertical data horizontally by counting out the lines in column B and creating an if statement in column C like =IF(B1=1,TRANSPOSE(A1:A4),"") and then filtering out the blank lines. Using Power query is cleaner though :) Love using custom columns. Last time I used Power Query was to duplicate lines based on a header reference as the value using a table within a table Table.Repeat(Table.FromRecords({[Col1=1]}),[#"header_reference"])

    • @arne.munther
      @arne.munther Рік тому

      Do you mean Table.Transpose ?

    • @tecwzrd
      @tecwzrd Рік тому +1

      @@arne.munther No, just the regular TRANSPOSE excel formula to make an array of data that is vertical to horizontal or vice versa. Sometimes diving into Power Query is more trouble than it's worth and simple regular formulas can do the job much quicker.

  • @BhavyaGupta
    @BhavyaGupta Рік тому +3

    Sir both the approaches are Awesome 👏 Thanks for making such tutorials 🙂
    In the second approach using M, can we directly use Table.FromRows after the split step, giving column names as list in second parameter ??

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +1

      I guess not.. Each list item needs to be separated with a comma to put it out in columns.

    • @TheMoh148
      @TheMoh148 Рік тому +2

      Yes you can ❤

    • @BhavyaGupta
      @BhavyaGupta Рік тому +5

      @@GoodlyChandeep I mean something like this -
      let
      Source = {"A", 25, "Mumbai", "B", 30, "Delhi", "C", 27, "Chennai"},
      tbl = Table.FromRows(List.Split(Source,3),{"Name","Age","City"})
      in
      tbl

    • @TheMoh148
      @TheMoh148 Рік тому +1

      @@BhavyaGuptaGood

    • @BhavyaGupta
      @BhavyaGupta Рік тому +1

      @@TheMoh148 Thank you :)

  • @enricomendiola9952
    @enricomendiola9952 11 місяців тому

    Hello this is a great solution! I was wondering after converting all of those into individual records. When load it into excel sheet how to load the records only with the column headers values of records only. Thanks in advance

  • @johnedwards7024
    @johnedwards7024 3 місяці тому

    Chandeep, nice video. What would you do if the number of rows to unstack varied. I have an issue where I am unstacking an address. At time it has the first level and then immediately the city and state. at other times it has the first address, then say a suite number, and then the line with city and state. Therefore, it is at times three lines and at other times only two lines.

  • @anuradhaabewardana314
    @anuradhaabewardana314 8 місяців тому

    Hey Chandeep, Is there a way to group this if the number of rows in the bucket vary. Thank you

  • @ssurajkr1234
    @ssurajkr1234 Рік тому +1

    DAX advanced course available? If yes link please

  • @ArthurCapers
    @ArthurCapers Рік тому +1

    HI Goodly, I love the approach, but I would like to use your approach on a huge data set. The loading into power query is the easy bit, but how to transform it into a list when the number of rows per record varies and each rows contains has different number of elements on it.
    name and id might be on row 1 or split over 2 rows. each record contains about 12 elements but extracting it across possible up to 8 rows.
    thanks for your insight.
    the data set is a mainframe extract

    • @excelworx8712
      @excelworx8712 Рік тому +1

      Hi Chandeep, my query is the same - I have different numbers of rows per record. To make it even worse, my list has an additional column with related information. The first 2 columns have payables from a salary sheet and the next 2 columns have the deductions

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +2

      Send me a sample and expected output - goodly.wordpress@gmail.com

    • @wensesvincen4877
      @wensesvincen4877 Рік тому +1

      @@GoodlyChandeep Waiting for this Reply....Can i send you my own dataset too?

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +1

      Yes sir, please!
      Thanks

    • @excelworx8712
      @excelworx8712 Рік тому

      @@GoodlyChandeep I have done so, thanks in advance!

  • @ym10up
    @ym10up 6 місяців тому

    I do have a question, please.
    I was able to follow along the first method all the way till the pivot column part. When I clicked on the pivot column button, instead of giving me the table as your example, I got a table where the first batch of rows only contain value in the first column, then the next batch of rows only contain value in the second column, and so on. It appears that the pivot did not reference both the Module and Subtraction as index for columns and rows.
    My data has a slight difference than yours. Your data was in a single column and you added column headers later on. My data is in two columns, all the headings in one column and all the values in the other. I tried it with the headers column removed to mimic your data and it's worse than keeping the headers column and pivoting it.
    Could you please give me some pointers? Thank you.

  • @nunolourenco1532
    @nunolourenco1532 Рік тому

    Great approach, as usual, but... is it more efficient? Whenever I work with large set of data an use list functions I struggle to output the results!

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +1

      I doubt that lists are slowing down your query. It could be something else.
      I generally try to avoid pivoting, transposing, sorting, distinct count large tables

  • @ricckymishra
    @ricckymishra Рік тому

    Sequence formula can now make it super quick.

  • @pattyboy1233
    @pattyboy1233 Рік тому

    kool. Very informative
    Would this method work with a uneven or random number fields, say a comment field or a 2nd phone number.
    How would you handle that?

  • @user-ri7sw2wt6f
    @user-ri7sw2wt6f Рік тому

    What column did you pivot on at mm 2:00 (Pivoted Column1)?

  • @shanshines11
    @shanshines11 Рік тому

    Given we do not have PQ and M code, can we still do this in plain Excel with formula?

  • @amitsawant2577
    @amitsawant2577 Рік тому

    Hi, please can you share the logic to show the week from Sunday to Saturday. If month ends in between week like on Tuesday or Wednesday, it should still consider the dates from next month till Saturday and consider those dates in previous month's last week

  • @marivicmawanay3246
    @marivicmawanay3246 10 місяців тому

    Can you help how to code dynamically Multiple skills and proficiency pivoted

  • @piotrsiwiec4396
    @piotrsiwiec4396 Рік тому

    Great video, nut I have a question, how applied this method to a data where number of information change for every person. For example Cecilia has 3 additional information, Iris has 7, Joanne has 5, Peter has 3 and so on.

  • @choiseunghyunify
    @choiseunghyunify Місяць тому

    What if you have many columns of data on the same spreadsheet?

  • @sundarun
    @sundarun 9 місяців тому

    How would you do if there are 1-M rows under a heading

  • @eslamfahmy87
    @eslamfahmy87 10 місяців тому

    Shall be make a live steps for interface instead the recorded

  • @michaelt312
    @michaelt312 Рік тому

    May I ask what software you use for drawing on screen?

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +1

      Zoom it

    • @michaelt312
      @michaelt312 Рік тому

      @@GoodlyChandeep, thank you! And from MS. Awesome. Looks like a great aide for classroom settings when training.

  • @natatdem
    @natatdem Рік тому

    Que hago en este caso: tengo una lista D ,x1,x2 D c1,c2,c3, F d1,d2,d3,d4 y necesito que D,D y F me queden como otra columna al lado de la lista?? 0:09

    • @natatdem
      @natatdem Рік тому

      [D,D],[D,x1] ,[D,x2], [D,D],[D,c1] ,[D,c2], [D,c3], [F,F],[F,d1] ,[F,d2], [F,d3],[F,d4] sería el resultado de la matriz

  • @AzharKhan-kd9bf
    @AzharKhan-kd9bf Рік тому

    Hi can any 1 share the M Code so that its easy to copy as noting it down from video causes troubles....

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому

      You can get the M code from the description's downloadable file.

  • @victor_wang_1
    @victor_wang_1 Рік тому

    Afer List.Split, you could have simply used Table.FromRows. No need for records here :).

    • @GoodlyChandeep
      @GoodlyChandeep  Рік тому +1

      I agree. During recording the video some error cropped so I switched to records.
      Thanks Victor!

  • @eslamfahmy87
    @eslamfahmy87 10 місяців тому

    Actually, I left many of comments to you with appreciation or explanation but unfortunately you did not answer for any!

    • @GoodlyChandeep
      @GoodlyChandeep  10 місяців тому

      I admire all your comments!
      Cheers :)