SWITCH Function in Power Query

Поделиться
HTML-код
  • Опубликовано: 5 мар 2024
  • • The Magic of Working w...
    In this video, I'll show you a simple way to imitate the SWITCH function in Power Query. Since Power Query doesn't have this function, I'll demonstrate an easy technique that mimics it, helping you avoid complex nested IF statements.
    #PowerQuery #DataCleaning #NestedIf
    ===== ONLINE COURSES =====
    ✔️ Master 'M' in Power Query -
    goodly.co.in/learn-m-powerquery/
    ✔️ 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/switch-function-...
    ===== 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'll find a ton of interesting videos that I have created :) Cheers!
  • НаукаНаука

Комментарии • 103

  • @victor_wang_1
    @victor_wang_1 2 месяца назад +18

    It's cool and clever, but I'd recommend sticking with the normal nested ifs as its more universally familiar. This technique, like much of custom M code, also breaks query folding which creates a different "scalability" problem if you have many records. As a final point (and this is only based on my experience), even ignoring query folding, it wouldn't surprise me if the nested ifs was more performant as I've found that iterating list access can have a noticeable impact. If you have many conditionals, creating an additional table and left joining could provide the most scalability (for non-query folding).

    • @txreal2
      @txreal2 Месяц назад

      Yes, tried this "creating an additional table and left joining could provide the most scalability"
      Thanks.

  • @greisboy425
    @greisboy425 2 месяца назад +6

    The if-else version is a lot easier, but I really love how you explain the other version, that's really help to make us understand m language more deeply. Awesome content.

  • @clubedavid
    @clubedavid 2 месяца назад +9

    Amazing video. I Start seeing M as a standard programming language instead of thinking of Chinese characters, thanks to you!

  • @kuuuyajim
    @kuuuyajim День назад

    Thank you for the wonderful explanation. I already have few use cases in mind while watching. 😀

  • @punit6490
    @punit6490 2 месяца назад +8

    Error alert: added 6 results for 5 conditions. Anyways great stuff.

  • @spen2431
    @spen2431 2 месяца назад +8

    💥💥 Nice one, and thanks for sharing. Not convinced it is "easier" than a conditional column though...

  • @sandeepkhawas3367
    @sandeepkhawas3367 2 месяца назад +3

    You are such an inspiration to thousands who are learning power bi..god bless you sir..!

  • @kaidobor1
    @kaidobor1 2 месяца назад +2

    Largest complexity in either approach right now is the redundancy of writing each threshold level twice. With nested if and switch you can avoid this, since after first match the result is selected and that's it. Switch statement does not require, that only one condition is true. With list approach you must provide complete condition, so only one result would match.

  • @The_Excel_Enthusiast6782
    @The_Excel_Enthusiast6782 2 месяца назад +1

    Excellent video!
    I watched this last night and forgot to comment. But I had so many ideas from watching this video!!

  • @paulwyatt8523
    @paulwyatt8523 2 месяца назад +1

    Thank you Chandeep. What a fantastic technique. Until I discovered your content, I was concerned at how we might provide 'Certified' datasets because they still require the user to understand DAX in order to create their own 'self-service' measures and columns. You PQ SWITCH function is perfect for devs to create really rich 'certified' datasets that users can easily build with. I have a colleague who, after seeing the power of power Query through your techniques, has decided to work in PQ and not in SQL. You really change perceptions. You are also underpinning all of my own best practice solutions at the PQ level so, again, thank you.

    • @txreal2
      @txreal2 2 месяца назад

      Except with large datasets 😊

    • @randomguy-jo1vq
      @randomguy-jo1vq 2 месяца назад

      ​@@txreal2that is true but with pq you need to be very cautious where to apply which resource intensive transformation step

  • @mienzillaz
    @mienzillaz 2 месяца назад +1

    Really nice example and I need to thank you not for this particular video, but for everything you did around PQ.
    Because of you (and BI Gorilla) I started to see PQ almost the way Neo saw the matrix 😅
    You won't see bunch of views from me on this account, as I mostly watch you from company account 😂, but I'm there and I'm always recommending you as PQ guru.
    Keep it coming.

  • @cemisovs
    @cemisovs 2 месяца назад +1

    Very good explanation and nice tricks. Thank you for the video! ❤

  • @ziggle314
    @ziggle314 2 месяца назад

    Great work! M lists are so powerful. Thank you.

  • @pavelandreev6023
    @pavelandreev6023 2 месяца назад

    Really nice! Tnx

  • @barttitulaerexcelbart9400
    @barttitulaerexcelbart9400 2 месяца назад

    Thanks. But if you don't need that so much, you can forget. My alternative: use "Column by Examples. It first starts with = but if you add more numbers at some point the "algortithm" displayst >=. You can then change some numbers in the formula. I don't know if it works all the time, but I just tried out. Looking forward to see your next video.

  • @raimundojs9547
    @raimundojs9547 2 месяца назад

    Perfect! Awesome solution!

  • @boissierepascal5755
    @boissierepascal5755 2 месяца назад

    Awsome and brillant use of lists.

  • @shoaibrehman9988
    @shoaibrehman9988 2 месяца назад

    I would say, its a gr8 solution, i hv been in situations and used many nested if, now thankful 🙏 for you. 🎉

  • @megabuilds3007
    @megabuilds3007 2 месяца назад +4

    I was unable to see the importance or efficiency of this approach over nested ifs. Explain please?

    • @frachiar4444
      @frachiar4444 2 месяца назад

      me too. I tried to import a table of conditions and results, in order to make this more dinamic, but I failed :-( so, I do prefer nested if

  • @chrism9037
    @chrism9037 2 месяца назад

    Amazing! Thanks Chandeep!!!

  • @carlossv2945
    @carlossv2945 2 месяца назад

    its Amazing the potental of powerquery, regards from Colombia

  • @DinoDelight
    @DinoDelight 2 месяца назад

    What a great video, great explanation and example, thank you

  • @joaorataoo
    @joaorataoo 2 месяца назад

    Your solution is brilliant and the way you make the explanation simple is amazing.
    When you were starting to present the solution, I thought you were going to suggest another solution which would be to create a function and call it within the query.

  • @pthapa55
    @pthapa55 2 месяца назад

    You are amazing, thank you for sharing.

  • @user-yo2nb4ry7i
    @user-yo2nb4ry7i 2 месяца назад

    Отличный кейс. Спасибо. 👍👍

  • @leemorgan8007
    @leemorgan8007 2 месяца назад

    great video and clear instructions to use. Will check out your lists video too as I don't use them currently but think they will be incredibly valuable.

  • @rzvnpscl
    @rzvnpscl 2 месяца назад +2

    Thanks for your videos, Chandeep. Is there any performance improvement with this approach?

  • @iankr
    @iankr 2 месяца назад

    Very nice - many thanks!

  • @jimgleason4040
    @jimgleason4040 2 месяца назад

    Awesome video as usual!

  • @Nalaka-Wanniarachchi
    @Nalaka-Wanniarachchi 2 месяца назад +1

    Nice one 👍
    One list lookup another list based on true condition.

  • @gauravguliani358
    @gauravguliani358 2 месяца назад +1

    Not a problem in the first place
    I see that in a lot of your videos

  • @miksosnowy1038
    @miksosnowy1038 2 месяца назад

    you showed here also how to use something like index + match in excel in an easy way. I think this functionality is for me much more useful than swich.
    anyway great video, and as always very well explained :)

  • @zahir585
    @zahir585 2 месяца назад

    Brillante ❤ Keep up the hard work my friend✌

  • @jamesclark2020
    @jamesclark2020 2 месяца назад

    This is neat! Thank you. Power Query M is awesome 😎

  • @stefankirst3234
    @stefankirst3234 2 месяца назад

    Watched this video almost immediately after it was posted and today I needed this exact thing. Once again: Thanks Chandeep! Awesome content :)

  • @brij26579
    @brij26579 2 месяца назад

    Awesome Use case 🤟 Goodly Rocks 👏

  • @laurentmarc1928
    @laurentmarc1928 2 месяца назад

    Already splendid. Something really convenient in DAX Switch function is that the answer comes with the first TRUE answer. Would there be a tweak in this M code to give the position of the first TRUE in the list to even mimic better the DAX Switch? Maybe with a List.First ?

  • @deda118
    @deda118 2 месяца назад

    As a beginner, can’t see the benefit of this convoluted solution. But a a learning anyway, thank you.

  • @kelemi4
    @kelemi4 2 месяца назад +1

    Great video! Curious if you could make this into a user defined function with three inputs: a list of values, list of conditions and list of results that then could be reusable, would be interesting to modify for a default value if no conditions are met.

  • @KuldeepSingh-nq1vi
    @KuldeepSingh-nq1vi 2 месяца назад

    Very Nice and Incredible Video Bro..

  • @ThepExcel
    @ThepExcel 2 месяца назад

    creative one. thx

  • @kot23
    @kot23 2 месяца назад

    Nice take on this scenario, I like that it uses lists & table logic instead of nested ifs, feels a lot more like Power Query that way. But is it more readable or user-friendly?

  • @jonathanheath8903
    @jonathanheath8903 2 месяца назад

    Excellent video as usual, for a standard data set (int, text, etc) it’s great. I have to wonder if I can use the idea to test binary\table condition like Excel.Workbook(binarytotable) iserr true,false result being switch to ‘bad file’ or the normal [table]

  • @PranayPawar1991
    @PranayPawar1991 Месяц назад

    I still find "nested if" better in this case as it's adding too much of query folding. It is worth comparing how much time it takes in report refresh with a large dataset

  • @dssmatus4962
    @dssmatus4962 2 месяца назад +1

    This is amazing Chandeep, thanks for this. Is this somehow replicable in a way, that instead of hardcoding list, we can use some mapping file instead? Lets say, if another department is keeping excel with those commissions, and I am connecting this to my datamodel, I would like to automate this without me doing any maintenance of hardcoding

  • @umesh2403
    @umesh2403 2 месяца назад

    Amazing...❤

  • @alejandraseverino9240
    @alejandraseverino9240 2 месяца назад

    Your video was very helpful, how can I apply this function if I'm using dates and in between and after specific date?

  • @giorgitsomaia2812
    @giorgitsomaia2812 2 месяца назад

    Super !!!

  • @JJ_TheGreat
    @JJ_TheGreat 2 месяца назад

    Awesome!

  • @nitheshn7019
    @nitheshn7019 2 месяца назад

    Thank you

  • @markrobinson7492
    @markrobinson7492 2 месяца назад +5

    is it just me, or anyone else think the NestedIF will just do fine here

    • @yaynative
      @yaynative 2 месяца назад

      Probably depends on the scenario

  • @joaquimcosta952
    @joaquimcosta952 2 месяца назад

    Amazing.

  • @ronaldtugume572
    @ronaldtugume572 2 месяца назад

    Brilliant! How do you make it dynamic if the conditions change just as the discounts would equally change?

  • @eslamfahmy87
    @eslamfahmy87 2 месяца назад

    🎉 creative 💡

  • @jerrydellasala7643
    @jerrydellasala7643 2 месяца назад

    Would love to see that as a function!

  • @user-dt5cy1vr2t
    @user-dt5cy1vr2t 2 месяца назад

    Nice as always :)

  • @RonDavidowicz
    @RonDavidowicz 2 месяца назад

    Great video…any technique that gets rid of nested ifs is a good one!
    Question: how would you incorporate an Excel table of the different commission levels to make this more end user friendly?

  • @Fannie2uN2010
    @Fannie2uN2010 2 месяца назад

    Brilliant

  • @pamphlex
    @pamphlex 2 месяца назад

    Great video, Does it process data faster than a nested if statement?

  • @MyAvn
    @MyAvn 22 дня назад

    Thanks

  • @olivergarveigh8662
    @olivergarveigh8662 2 месяца назад

    Your videos are really helpful. I've been able to really improve my powerbi skills so thank you :D
    Just a quick question if that's okay. I have watched your videos on creating fiscal years but I can't figure out how to get it to show the fiscal period in a line graph. Can you help pls?

  • @prabhuji3337
    @prabhuji3337 2 месяца назад

    Does this have any impact over processing speed? Amazing video once again!

  • @dilipinamdarpatil6301
    @dilipinamdarpatil6301 2 месяца назад

    Nice 🙏

  • @SSi-nq3rt
    @SSi-nq3rt 2 месяца назад

    Great 2nd solution, thank you. However, I am a bit unsure why i do not get the first solution of cond. column…. Why wouldn’t it work to add a simple conditional column but using the rule upside down? Like (If greater then 14500 then 0.25 else if greater then 14000 then 0.20 else if greater then 12000 then 0.15…) and so on? Rather then using a condition with „greater then A but smaller than B“? I am sure there is a reason but I can’t see it…

  • @pawewrona9749
    @pawewrona9749 2 месяца назад

    I am not sure this approach makes things easier here. On top, I see another performance issue on top of the query folding point mentioned below. In your example you have 4 conditions to check, and even if the first condition is already satisfied, your approach still calculates remaining ones. This is unnecessary and doesn't happen when standard if is used.
    Still, your video shows how great Power Query is :)

  • @HussainAliNasser
    @HussainAliNasser 2 месяца назад

    Nice video. Wouldn't you run into an error if more than 1 condition is true? If so, is there a workaround for that? SWITCH only evaluates the first true (or false) condition and returns the result.

  • @McIlravyInc
    @McIlravyInc 28 дней назад

    How can I do this in DAX looking between tables?

  • @Acheiropoietos
    @Acheiropoietos 2 месяца назад

    I find nested if statements very easy to use in m code

  • @GoodlyChandeep
    @GoodlyChandeep  2 месяца назад +1

    Download the file ⬇ - goodly.co.in/switch-function-power-query
    The Magic of Working with Lists in Power Query - ruclips.net/video/90atXaUhBec/видео.htmlsi=x49Gh1lgJ-Kse79o
    Tackle even the most challenging data-cleaning problems. Check out the M Language course and push beyond the user interface ↗ - goodly.co.in/learn-m-powerquery/

  • @manojkahar5718
    @manojkahar5718 2 месяца назад

    I like this trick, Lot I use nested if. I will replace this trick

  • @zdzislawkes
    @zdzislawkes 2 месяца назад

    Hi, thank You very much for great content. I wonder what you said "something simillar to switch function" ;-)
    Maybe You thought about some functions with Your solution:
    fx_SWITCH( condition1, result1, condition2, result2, ... , else) ?

  • @cdmkk2211
    @cdmkk2211 2 месяца назад

    Can we get by multiplying the two list conditions and Result and sum them?????

  • @GainerOP
    @GainerOP 2 месяца назад

    Is there a way to have wildcards in your conditions? So a=1200 and b>4000, a=1200 and b=%

  • @indradutta4136
    @indradutta4136 2 месяца назад

    Can you please show me to create a custom WE column using power query. I want start date of week should be Saturday.

  • @salahaldeen7924
    @salahaldeen7924 2 месяца назад

    how cool was that

  • @Rice8520
    @Rice8520 2 месяца назад +1

    First formula is more simplier.😄

    • @GoodlyChandeep
      @GoodlyChandeep  2 месяца назад +1

      True at the first instance. One could argue that.

    • @Rice8520
      @Rice8520 2 месяца назад

      @@GoodlyChandeep but your example is very good for custom functions explanation.🤗

  • @ershelin
    @ershelin 2 месяца назад

    Hello Dear, is it possible to add conditional column in PQ based on parameters from multiple columns. I am asking since it is not working with me. Thanks

    • @GoodlyChandeep
      @GoodlyChandeep  2 месяца назад

      see this - stackoverflow.com/questions/31548135/power-query-transform-a-column-based-on-another-column

    • @ershelin
      @ershelin 2 месяца назад

      @@GoodlyChandeep thanks for the feedback. problem resolved.

  • @vijayvizzu1
    @vijayvizzu1 2 месяца назад

    Does the length of the both lists, need to be same? Means 1st contains 5 rows, and 2nd list 3 rows

  • @ramakrishnaravula4350
    @ramakrishnaravula4350 2 месяца назад

    Full video on new updates on Dax, power query and pivot

  • @bimanroy8865
    @bimanroy8865 2 месяца назад

    The catch all (*) condition is missing

  • @arpankumar4487
    @arpankumar4487 2 месяца назад

    Hi can you give me a solution why i'm not able to load xlsb file in powerquery window but same data i can load in xlsx format why it is happening.... in binary format file size reduce that's why we save file in binary format....

    • @aahanavikram07
      @aahanavikram07 2 месяца назад

      Power query uses only xlsx file.

  • @ershelin
    @ershelin 2 месяца назад

    this is an awesome video. my below code worked well. however false conditions generates Error.
    let
    Conditions=
    {
    Text.Contains([Description],"STATIONERY"),
    Text.Contains([Description],"STATIONARY"),
    Text.Contains([Description],"FURNITURE"),
    Text.Contains([Description],"CHAIR"),
    Text.Contains([Description],"A4"),
    Text.Contains([Description],"HSE"),
    Text.Contains([Description],"GIFT")
    },
    Results = {"CORPORATE","CORPORATE","CORPORATE","CORPORATE","CORPORATE","CORPORATE","CORPORATE"}
    in
    Results{List.PositionOf(Conditions,true)}

    • @GoodlyChandeep
      @GoodlyChandeep  2 месяца назад

      The conditions need to be mutually exclusive

    • @ershelin
      @ershelin 2 месяца назад

      @@GoodlyChandeep noted. however, I changed my approach. in my case "if/or/then/else if and else" works better and easy. well, your videos are very informative and saves my time

  • @user-zt6ir9wp3z
    @user-zt6ir9wp3z 2 месяца назад +2

    let
    Conditions =
    { [Amount] >= 1000 and [Amount] 10000 and [Amount] 14000 and [Amount] 20000 and [Amount] 30000 and [Amount] 50000
    } ,
    Boolean = List.Transform (Conditions , each if _ then 1 else 0),
    Results = {0.1,0.2,0.3,0.35,0.4,0.5} ,
    ZipList = List.Zip ({Boolean,Results})
    in
    List.Sum ( List.Transform ( ZipList,List.Product))

  • @RogerStocker
    @RogerStocker 2 месяца назад

    2:23 Not sure but I guess the cases below 10000 would result in 25% commission, wouldn't it? I guess this was not the intension.

  • @williamarthur4801
    @williamarthur4801 2 месяца назад

    I thought you were going to zip them, I have a bit of an obsession with list zip.

    • @GoodlyChandeep
      @GoodlyChandeep  2 месяца назад

      That would have produced a nested list. Hard to preview 😕

  • @pabeader1941
    @pabeader1941 17 дней назад

    Did you add the extra value to the second list just to see if anybody would comment on it? The last .35 has no real purpose...

  • @sunilkumar8419
    @sunilkumar8419 2 месяца назад

    Create video on febric pls

  • @pk5134
    @pk5134 2 месяца назад

    Great content as always!
    Is there a way you can use list.anytrue or list.alltrue for this?