Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Hi,
I have to clean up a table in my data model before to import it in Power BI.
Basically the table I have to filter looks like
Date | Item.Id |
2022-01-01 | A |
2022-01-02 | A |
2022-01-03 | A |
2022-01-04 | A |
2022-01-05 | A |
2022-01-06 | A |
2022-01-07 | A |
2022-01-01 | B |
2022-01-02 | B |
2022-01-03 | B |
2022-01-04 | B |
2022-01-05 | B |
2022-01-06 | B |
2022-01-07 | B |
And the table with my filtering criteria looks like
Item.Id | CreatedDate | IsActive | LastModifiedDate |
A | 2022-01-03 | FALSE | 2022-01-04 |
B | 2022-01-05 | TRUE | 2022-01-05 |
The filtered table should contain
Date | Item.Id |
2022-01-03 | A |
2022-01-04 | A |
2022-01-05 | B |
2022-01-06 | B |
2022-01-07 | B |
In other words, I'd like to remove all the rows which "Date" for each "Item.Id" is "before" the Item.Id "CreatedDate",
and only if "IsActive" = FALSE,
all the rows which "Date" for each "Item.Id" is "after" the Item.Id "LastModifiedDate" as well.
Thank you for any hint.
maclura
Solved! Go to Solution.
Thanks @Greg_Deckler for your suggestion.
It doesn't work anyway. Perhaps because I was not clear in my problem description.
Either way, I solved this problem with a little edit to your code
let
Source = Table.NestedJoin(Table, {"Item.Id"}, Table2, {"Item.Id"}, "Table2", JoinKind.RightOuter),
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {"CreatedDate","LastModifiedDate", "IsActive"}, {"Table2.CreatedDate", "Table2.LastModifiedDate", "Table2.IsActive"}),
#"Added Custom" = Table.AddColumn(#"Expanded Table2", "IsEarlier", each if [Date] < [Table2.CreatedDate] then 1 else 0),
#"Added Custom1" = Table.AddColumn(#"Expanded Table2", "IsLater", each if [Tech Active] = "FALSE" then if [Date] > [Table2.LastModifiedDate] then 1 else 0 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([IsEarlier] = 0 and [IsLater] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "Table2.CreatedDate", "Table2.LastModifiedDate", "Table2.IsActive"})
in
#"Removed Columns"
I was not able to include all the logic in a single column, so I preferred to add 2 custom columns for clarity. And this is the solution.
maclura
@maclura Try:
let
Source = Table.NestedJoin(Table, {"Item.Id"}, Table2, {"Item.Id"}, "Table2", JoinKind.RightOuter),
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {" CreatedDate", " IsActive"}, {"Table2. CreatedDate", "Table2. IsActive"}),
#"Added Custom" = Table.AddColumn(#"Expanded Table2", "Custom", each if [Date] < [Table2. CreatedDate] and [Table2. IsActive] = false then 1 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "Table2. CreatedDate", "Table2. IsActive"})
in
#"Removed Columns"
Thanks @Greg_Deckler for your suggestion.
It doesn't work anyway. Perhaps because I was not clear in my problem description.
Either way, I solved this problem with a little edit to your code
let
Source = Table.NestedJoin(Table, {"Item.Id"}, Table2, {"Item.Id"}, "Table2", JoinKind.RightOuter),
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {"CreatedDate","LastModifiedDate", "IsActive"}, {"Table2.CreatedDate", "Table2.LastModifiedDate", "Table2.IsActive"}),
#"Added Custom" = Table.AddColumn(#"Expanded Table2", "IsEarlier", each if [Date] < [Table2.CreatedDate] then 1 else 0),
#"Added Custom1" = Table.AddColumn(#"Expanded Table2", "IsLater", each if [Tech Active] = "FALSE" then if [Date] > [Table2.LastModifiedDate] then 1 else 0 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([IsEarlier] = 0 and [IsLater] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "Table2.CreatedDate", "Table2.LastModifiedDate", "Table2.IsActive"})
in
#"Removed Columns"
I was not able to include all the logic in a single column, so I preferred to add 2 custom columns for clarity. And this is the solution.
maclura
Check out the July 2025 Power BI update to learn about new features.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
User | Count |
---|---|
8 | |
6 | |
6 | |
5 | |
5 |
User | Count |
---|---|
10 | |
8 | |
6 | |
6 | |
6 |