Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
harishkanyal
Frequent Visitor

Create new table by filtering column value

Hi,

 

Please let me know how to create new table from one Big table. I would like to create 3-4 small tables from one big based on one the column value.

 

Thanks

Harish

2 ACCEPTED SOLUTIONS

This is the "M" code for the main table:

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}})
in
    #"Changed Type"

For DeptType A

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "A"))
in
    #"Filtered Rows"

For DeptType B

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "B"))
in
    #"Filtered Rows"

Red text indicates the only real difference in the queries. You can filter a column by clicking on the down arrow in the column in the Query Editor and just selecting the value(s) that you want.

 

Again, I'm not entirely clear on the use case. If you are new to Power BI, you will find that many of the things that you might typically create a star schema for in traditional multi-dimensional cubes are not entirely necessary in Power BI due to how slicers work, etc. So, if you want a particular measure or calculation to just be on DeptType A or DeptType B, you can put that column in a visual along with your measure and the context of the visual will give you the right answer. Just throwing that out there because it is something I had to slowly realize over time coming from a more traditional BI background.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

Hi @harishkanyal,

 

Smoupre’s solution seems well, I’d like to share other way to solve your issue based on dax:

 

SubTable A = CALCULATETABLE(“Main Table”,FILTER(“Main Table”, “Main Table”[DeptType]="A"))

SubTable B = CALCULATETABLE(“Main Table”,FILTER(“Main Table”, “Main Table”[DeptType]="B"))

 

Regards,

Xiaoxin Sheng

 

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

View solution in original post

12 REPLIES 12
BieBel
Regular Visitor

Hi,

 

Is there a way I can make a new/seperate table for every distinct value, no matter if my input changes?

e.g. at the moment I havel 12 different values = 12 tables, 12 times modifying the query script as it were from 

    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "A")) to [DeptType] = "L"

I would like to be able to create these 12 tables in the same script and, if the numer of disctinct values changes (e.g. to 13), create the extra table automatically also

Anonymous
Not applicable

Go to format on the top. Then edit interactions and then select filter on the graphs that you want to be filtered. Refer to this link for more info

https://docs.microsoft.com/en-us/power-bi/service-reports-visual-interactions

Greg_Deckler
Super User
Super User

You could just copy your query in the Query Editor, filter your column, import it into a new table. Rinse and repeat for as many tables as you desire. Not entirely sure of the use case, but this would be one way of doing it.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...

Thanks for replying. Could you please share query for this, I am new to BI. Below in my scenario :

 

 Capture.PNG

This is the "M" code for the main table:

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}})
in
    #"Changed Type"

For DeptType A

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "A"))
in
    #"Filtered Rows"

For DeptType B

 

let
    Source = Csv.Document(File.Contents("C:\temp\powerbi\departments.csv"),[Delimiter=",", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Department", Int64.Type}, {"Name", type text}, {"DeptType", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "B"))
in
    #"Filtered Rows"

Red text indicates the only real difference in the queries. You can filter a column by clicking on the down arrow in the column in the Query Editor and just selecting the value(s) that you want.

 

Again, I'm not entirely clear on the use case. If you are new to Power BI, you will find that many of the things that you might typically create a star schema for in traditional multi-dimensional cubes are not entirely necessary in Power BI due to how slicers work, etc. So, if you want a particular measure or calculation to just be on DeptType A or DeptType B, you can put that column in a visual along with your measure and the context of the visual will give you the right answer. Just throwing that out there because it is something I had to slowly realize over time coming from a more traditional BI background.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Mastering Power BI 2nd Edition

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

If I have a dynamic measure instead of "A","B"

Suppose Measure1="C", Measure2="A" (dynamic based on some formulas, not fixed)

How will I calculate a table based on a master table, filtering only "C" values and storing in a table1, A values in Table2

MASTERTABLETable1 Table2
     
MilestoneMilestoneMilestone
A C A
A C A
A   A
B    
B    
B    
C    
C    

Hi Greg,

 

How would you make the filtering value dynamic?

 

I have a main table with orders from many different customers and they all need their own report and it changes each month who is in the report. I don't want to write filter code for each customer as there can be as many as 300.

 

So i'm looking for a way to have powerquery or powerpivot do somekind of new table for each unique customer id with all of that customers orders from the main table.

hi there,

 

kinda related... i also am looking for a way to split a main table into several small flitered duplicates, however i want it to happen dynamically as i can't be sure what the actual filter values will be (or there may be too many for me to bother writing code for each and every value) 😄

 

Is there a way to code M to do this for each unique value in a coloumn without specifying those values ?

 

kind regards

Michael

Thanks for details email. My main table data is alreday in table which I imorted from other source . To make reports I need to createe new small table. Seems I can use below part of code to filter rows from main table, Let me try it during weekend :

 

#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([DeptType] = "A"))

Hi @harishkanyal,

 

Smoupre’s solution seems well, I’d like to share other way to solve your issue based on dax:

 

SubTable A = CALCULATETABLE(“Main Table”,FILTER(“Main Table”, “Main Table”[DeptType]="A"))

SubTable B = CALCULATETABLE(“Main Table”,FILTER(“Main Table”, “Main Table”[DeptType]="B"))

 

Regards,

Xiaoxin Sheng

 

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Ok, now...
I need this by a SELECTEDVALUE from anoter table... how i can make that?

AliceW
Impactful Individual
Impactful Individual

This is such a great answer! Thanks, man, I'm using it now.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.