cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

Repeat Friday Data for Weekends and Holidays

Hi - have searched and found similar problems, but no suggestions I have been able to follow...

 

I have data which is posted for each business day, while nothing at all appears for non business days.  I want to copy the data such that is is repeated for the following non business days, with the non business day date.

 

I have more than one row of data so a simple fill down isn't possible.  I can create another table with all dates, and merge with the original table to show the missing dates, but haven't managed to succesfully get any further than that.  I am pretty new to Power Query, so I might struggle with anything too complicated!

 

Any help is much appreciated.

 

My sample raw data is here: 

 

balanceDateConcatBalance
6/07/2023A:A:A0.00
6/07/2023A:A:B1.00
6/07/2023A:A:C2.00
6/07/2023A:A:D3.00
8/07/2023A:A:A0.00
8/07/2023A:A:B1.10
8/07/2023A:A:C2.20
8/07/2023A:A:D3.30
10/07/2023A:A:A0.00
10/07/2023A:A:B1.21
10/07/2023A:A:C2.42
10/07/2023A:A:D3.63

 

and the desired outcome is here:

 

balanceDateConcatBalance
6/07/2023A:A:A0.00
6/07/2023A:A:B1.00
6/07/2023A:A:C2.00
6/07/2023A:A:D3.00
7/07/2023A:A:A0.00
7/07/2023A:A:B1.00
7/07/2023A:A:C2.00
7/07/2023A:A:D3.00
8/07/2023A:A:A0.00
8/07/2023A:A:B1.10
8/07/2023A:A:C2.20
8/07/2023A:A:D3.30
9/07/2023A:A:A0.00
9/07/2023A:A:B1.10
9/07/2023A:A:C2.20
9/07/2023A:A:D3.30
10/07/2023A:A:A0.00
10/07/2023A:A:B1.21
10/07/2023A:A:C2.42
10/07/2023A:A:D3.63
10 REPLIES 10

Hello, @MarkDonald 

let
    Source = your_table,
    type_date = Table.TransformColumnTypes(Source,{{"balanceDate", type date}}),
    g = Table.Group(type_date, "balanceDate", {{"bd", each _}, {"data", each true}}),
    all_dates = List.Dates(
        List.Min(g[balanceDate]), 
        Duration.TotalDays(List.Max(g[balanceDate]) - List.Min(g[balanceDate])),
        #duration(1, 0, 0, 0)
    ),
    tl = Table.FromColumns({all_dates}, {"balanceDate"}),
    combine = g & tl,
    sort = Table.Sort(combine,{{"balanceDate", Order.Ascending}, {"data", Order.Descending}}),
    f_down = Table.FillDown(sort,{"bd"}),
    expand = Table.ExpandTableColumn(f_down, "bd", {"Concat", "Balance"})[[balanceDate], [Concat], [Balance]]
in
    expand

Thankyou so much!  Works perfectly, and I almost understand what it is doing 😁

 

@MarkDonald in the end we just select the columns we need 

[[balanceDate], [Concat], [Balance]]

 other than this it's all in the code. Just walk through steps in PQ editor. Refer to MS site to get understanding. 

Actually, sorry, it isn't looking quite right, it seems to be duplicating for the dates that already exist, apart from the last.  I have stepped through and can see where it is duplicating the dates but can't really figure out how to make it work without this happening.  I can correct at the end by simply removing duplicates so I have something that works, so thanks!

 

balanceDateConcatBalance

6/07/2023A:A:A0
6/07/2023A:A:B1
6/07/2023A:A:C2
6/07/2023A:A:D3
6/07/2023A:A:A0
6/07/2023A:A:B1
6/07/2023A:A:C2
6/07/2023A:A:D3
7/07/2023A:A:A0
7/07/2023A:A:B1
7/07/2023A:A:C2
7/07/2023A:A:D3
8/07/2023A:A:A0
8/07/2023A:A:B1.1
8/07/2023A:A:C2.2
8/07/2023A:A:D3.3
8/07/2023A:A:A0
8/07/2023A:A:B1.1
8/07/2023A:A:C2.2
8/07/2023A:A:D3.3
9/07/2023A:A:A0
9/07/2023A:A:B1.1
9/07/2023A:A:C2.2
9/07/2023A:A:D3.3
10/07/2023A:A:A0
10/07/2023A:A:B1.21
10/07/2023A:A:C2.42
10/07/2023A:A:D3.63

Here is another code that does not have the duplicates problem you ran into:

 

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fc25DYAwEETRXja28B7IIDKOLiz33wYrjUjw2ppgghf8Wqlk3rKyGiU6D58/L8zUUo+Xv4zw9tcRPv724T5r/hFNiRFNjRFNAwrPop2iqhIrsqvGim4xau0F", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [balanceDate = _t, Concat = _t, Balance = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"balanceDate", type date}, {"Concat", type text}, {"Balance", type number}},"en-150"),
    
//Group by date
    #"Grouped Rows" = Table.Group(#"Changed Type", {"balanceDate"}, {
        {"all", each _, type table [balanceDate=nullable date, Concat=nullable text, Balance=nullable number]}}),

//Create table of All dates
    #"All Dates" = Table.FromColumns(
        {List.Dates(#"Grouped Rows"[balanceDate]{0},
                    Duration.Days(List.Last(#"Grouped Rows"[balanceDate])- #"Grouped Rows"[balanceDate]{0})+1,
                    #duration(1,0,0,0))},
                    type table[dates=date]),

//Join the tables and sort so we have
//  nulls where there are missing dates
    #"Join" = Table.Join(#"Grouped Rows","balanceDate",#"All Dates","dates",JoinKind.FullOuter),
    #"Sorted Rows" = Table.Sort(Join,{{"dates", Order.Ascending}}),

//Replace nulls in balanceDate with the missing dates
    #"Replace nulls" = Table.ReplaceValue(
        #"Sorted Rows",
        each [balanceDate],
        each [dates],
        (x,y,z)=> if x = null then z else y,
        {"balanceDate"}

    ),
    #"Removed Columns" = Table.RemoveColumns(#"Replace nulls",{"dates"}),
    #"Filled Down" = Table.FillDown(#"Removed Columns",{"all"}),
    #"Expanded all" = Table.ExpandTableColumn(#"Filled Down", "all", {"Concat", "Balance"}, {"Concat", "Balance"})
in
    #"Expanded all"

 

 

 

Thanks - I am just having difficulty merging this into my code as I have already had to get it into the format posted above. At present I have (after removing a few steps): let Source = Sql.Databases("xx"), xxx = Source{[Name="xxx"]}[Data], findur_viewBalanceSheetHistoric = edw{[Schema="findur",Item="viewBalanceSheetHistoric"]}[Data], #"Filtered Rows" = Table.SelectRows(findur_viewBalanceSheetHistoric, each [balanceDate] >= #date(2023, 6, 29) and [balanceDate] <= #date(2023, 7, 17)), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each not Text.StartsWith([portfolio], "ZZZ")), #"Merged Columns" = Table.CombineColumns(#"Filtered Rows1",{"accountGroup", "reportPortfolio", "postingCurrency"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Concat"), #"Grouped Rows" = Table.Group(#"Merged Columns", {"balanceDate", "Concat"}, {{"Balance", each List.Sum([balanceBase]), type nullable number}}) in #"Grouped Rows"

I don't understand what you mean. My code starts with your sample raw data so you would just replace my Source statement with the part of your code that produces your raw data.

 

I would also suggest that you write your code in a better format than what you show. I think you will find it easier to understand than using the "stream of consciousness" type format you have posted here. At least I would.

Sorry - novice at this, code is what I get from the steps I am taking to clean the data before it gets to a point where I want to replicate the data for the missing dates.  If I just take your code and change the source , I am going to be replicating huge amounts of data for the missing dates that I don't need.  So I am looking to perform the steps in my code below first, and I am trying to figure out how to integrate your code when doing that.  I can't just paste from:

let _t = ((type nullable text) meta [Serialized.Text = true])

as this is part of your source statement (I think, apologies for incorrect terminology).

 

So my code is below, hopefully better formatted now, if you are able to adapt it to integrate your code after my #"Grouped Rows" = that would be amazing!

 

 

let
    Source = Sql.Databases("xx"),
    xxx = Source{[Name="xxx"]}[Data],
    BS = edw{[Schema="findur",Item="viewBalanceSheetHistoric"]}[Data],
    #"Filtered Rows" = Table.SelectRows(findur_viewBalanceSheetHistoric, each [balanceDate] >= #date(2023, 6, 29) and [balanceDate] <= #date(2023, 7, 17)),
    #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each not Text.StartsWith([portfolio], "ZZZ")),
    #"Grouped Rows" = Table.Group(#"Reordered Columns", {"balanceDate", "Concat"}, {{"Balance", each List.Sum([balanceBase]), type nullable number}})

in
    #"Grouped Rows"

 

 

 

 

 

I still don't understand your issue. If the last step of your code that produces your raw data table is the step you have named #"Grouped Rows", then, from my code,

  • Delete the "Source =" step.
  • Paste my remaining code to replace everything after your #"Grouped Rows" step.
  • You will now have steps that aren't properly named, so do the following:
    • Change your #"Grouped Rows" named step to something like #"My Last Step"
    • In my first line, which will now be #"Changed Type", change the Table reference from Source to #"My Last Step" 
  • Now the steps should properly refer to each other.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (729)