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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
Richard_Halsall
Helper IV
Helper IV

Fill down with multiple conditions

Hi

 

I have the data as per this query

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("tdnbTttAGATgV0G5RsLnw6UL4dQ0HFOgCEUmpDTUdajZpLRPX5sUyRLtbDT1VIpKDMzHze5m/7m+7h3c9TZ72/PSVPnEzKvxeFK/PzN5ZcY7uZmu3pjF0+obu4uiGLcfHFfzh+nErN70nx/rr6d3G62nN5vXvTw8Dvadl3+jqyd/lO3VP5w73p+HZTVclCdZv37oOVtOuOU5nl+/uaxfWVHMJ3mTOZybjWyZz4r8tmj+rLL+U17/e4sECHE7QkKEeB0hEUL8jpAYIUFHSIKQsCMkRUjUEZKNsot/InFHyDuEJB0h2whJO0J2AOJ3teL7CGmv+EH9Oipf96iXX/FXv+LuH4ZXxUk2+PvDt+YuMJ3ajATmHjI9jbmPTF9jHiAz0JiHyAw15ntkRhpzgMxYY35AZqIxh8hMNeYRMF1HYx4jU7QPnSBTtA+dIlO0D50hs70PrXV4rUWeIzKUkCNERhLyIyJjCXmByERCXiIylZBX6DOdIyE/IdKVkLnl8iUgby1XMQE5sVzMBOSd5ZomIKeWS5uA/IxIze5zj0jRJ6AvyBR9ApoB0xd9AnoAZnMTiwXmV2R6GrNApq8xvyEz0JglMkONOUdmpDEfkRlrzO/ITDRmhcxUYz4Bs7mJKUyDTNE+tEBmex86b15VvpwWxay8/y9zicz2PpQ1r7WHeD9QbEDHPqPYkI79iWIjOvYXio3ZWOOg2ISOdVFsSsd6lpaIjIXlk0vHwrrJo2NhwUSvMgMrJXqVGVgihZJ9yMBOSXNmG1gxac5sAxsnzZltYAGlObMN6qN8zZltYD2lObMNaqua+0oiMGFb5WlM2Fb5GhO2VYHGhG1VqDFhWxVpTNhWxRoTtlWJxoRtVdoyOzzLUFvV3FcS7liGhZRLx8LOyaNjYa3k07GwOQroWFgOhXQsLIAiOhaWPDEdC4uchI6FZU1Kx6JCxuNXGSxd+FUGixV+lcHyhF9lsCDhVxksQfhVBosOfpXBMoNfZbCw4FcZLCX4VYZ6B59fZbBa4FeZrT1IuVhbQUDG2joAMtY25idjbZN8MtY2rCdjbfN4MtY2cidjbVN1MtY2OCdjbbNxMtY2/iZjbRNuMtY24SZjbRNuMtY24SZjbRNuLnZhm3CTsbYJ93qxN78B", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t, Column6 = _t, Column7 = _t]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Id", type text}, {"Contractor__c", type text}, {"Start_Date", type date}, {"Status__c", type text}, {"Full_Status__c", type text}, {"Project__c", type text}, {"Expected Project__c", type text}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Start_Date", Order.Ascending}})
in
#"Sorted Rows"

 

What I am attempting to do is fill down the value in the previous row Project__c column ONLY when the current row Status__c = X and the current row Contractor__c value equals the previous row Contractor__c value

 

The result should look as per the data in the column Expected Project__c

 

Can anybody help? Many Thanks

2 REPLIES 2
Papermain
Frequent Visitor

But what happens when the previous row value is a null value? In your expected result it will show an entry but is that as expected? It does not say so in your logic. 

 

I have come to this:

 

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("tdnbTttAGATgV0G5RsLnw6UL4dQ0HFOgCEUmpDTUdajZpLRPX5sUyRLtbDT1VIpKDMzHze5m/7m+7h3c9TZ72/PSVPnEzKvxeFK/PzN5ZcY7uZmu3pjF0+obu4uiGLcfHFfzh+nErN70nx/rr6d3G62nN5vXvTw8Dvadl3+jqyd/lO3VP5w73p+HZTVclCdZv37oOVtOuOU5nl+/uaxfWVHMJ3mTOZybjWyZz4r8tmj+rLL+U17/e4sECHE7QkKEeB0hEUL8jpAYIUFHSIKQsCMkRUjUEZKNsot/InFHyDuEJB0h2whJO0J2AOJ3teL7CGmv+EH9Oipf96iXX/FXv+LuH4ZXxUk2+PvDt+YuMJ3ajATmHjI9jbmPTF9jHiAz0JiHyAw15ntkRhpzgMxYY35AZqIxh8hMNeYRMF1HYx4jU7QPnSBTtA+dIlO0D50hs70PrXV4rUWeIzKUkCNERhLyIyJjCXmByERCXiIylZBX6DOdIyE/IdKVkLnl8iUgby1XMQE5sVzMBOSd5ZomIKeWS5uA/IxIze5zj0jRJ6AvyBR9ApoB0xd9AnoAZnMTiwXmV2R6GrNApq8xvyEz0JglMkONOUdmpDEfkRlrzO/ITDRmhcxUYz4Bs7mJKUyDTNE+tEBmex86b15VvpwWxay8/y9zicz2PpQ1r7WHeD9QbEDHPqPYkI79iWIjOvYXio3ZWOOg2ISOdVFsSsd6lpaIjIXlk0vHwrrJo2NhwUSvMgMrJXqVGVgihZJ9yMBOSXNmG1gxac5sAxsnzZltYAGlObMN6qN8zZltYD2lObMNaqua+0oiMGFb5WlM2Fb5GhO2VYHGhG1VqDFhWxVpTNhWxRoTtlWJxoRtVdoyOzzLUFvV3FcS7liGhZRLx8LOyaNjYa3k07GwOQroWFgOhXQsLIAiOhaWPDEdC4uchI6FZU1Kx6JCxuNXGSxd+FUGixV+lcHyhF9lsCDhVxksQfhVBosOfpXBMoNfZbCw4FcZLCX4VYZ6B59fZbBa4FeZrT1IuVhbQUDG2joAMtY25idjbZN8MtY2rCdjbfN4MtY2cidjbVN1MtY2OCdjbbNxMtY2/iZjbRNuMtY24SZjbRNuMtY24SZjbRNuLnZhm3CTsbYJ93qxN78B", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t, Column6 = _t, Column7 = _t]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Id", type text}, {"Contractor__c", type text}, {"Start_Date", type date}, {"Status__c", type text}, {"Full_Status__c", type text}, {"Project__c", type text}, {"Expected Project__c", type text}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Start_Date", Order.Ascending}}),
    #"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 0, 1, Int64.Type),
    #"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index.1", 1, 1, Int64.Type),
    #"Merged Queries" = Table.NestedJoin(#"Added Index1", {"Index"}, #"Added Index1", {"Index.1"}, "Added Index1", JoinKind.LeftOuter),
    #"Expanded Added Index2" = Table.ExpandTableColumn(#"Merged Queries", "Added Index1", {"Contractor__c", "Project__c"}, {"Contractor__c.1", "Project__c.1"}),
    #"Added Custom" = Table.AddColumn(#"Expanded Added Index2", "Custom", each if [Status__c] = "X" and [Contractor__c] = [Contractor__c.1] then [Project__c.1] else [Project__c]),
    #"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"Id", "Contractor__c", "Start_Date", "Status__c", "Full_Status__c", "Project__c", "Expected Project__c", "Custom", "Index", "Index.1", "Contractor__c.1", "Project__c.1"}),
    #"Added Custom1" = Table.AddColumn(#"Reordered Columns", "Expected results equals custom column?", each [Expected Project__c]=[Custom])
in
    #"Added Custom1"

@Papermain Thanks for taking the time to help to resolve this issue, if I can provide further context to assist.

 

The data is replicating a shift pattern for a project (Project__c) where a contractor (Contractor__c) works for 2 weeks (Status__c = L) and then does not work for 2 weeks (Status__c = X) 

 

Where the Status__c = X I need to populate the Project__c field with the value from where the Status__c = L

 

So in the data for Contractor__c = a024H00000nrNunQAE

They work, Status__c = L, from 31/05/2023 to 13/06/2023 on Project__c = a034H00001HJ5YlQAL

They do not work, Status__c = X, 14/06/2023 to 27/06/2023 but I need Project__c to show a034H00001HJ5YlQAL

 

i.e. they are allocated to the same project but not working

 

Does that make more sense

 

Thanks

 

Richard

 

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.