A
- AccessControlEntry.ConditionToIdentities
- Access.Database
- ActiveDirectory.Domains
- AdobeAnalytics.Cubes
- AdoDotNet.DataSource
- AdoDotNet.Query
- AnalysisServices.Database
- AnalysisServices.Databases
- AzureStorage.BlobContents
- AzureStorage.Blobs
- AzureStorage.DataLake
- AzureStorage.DataLakeContents
- AzureStorage.Tables
B
- BinaryFormat.Binary
- BinaryFormat.Byte
- BinaryFormat.ByteOrder
- BinaryFormat.Choice
- BinaryFormat.Decimal
- BinaryFormat.Double
- BinaryFormat.Group
- BinaryFormat.Length
- BinaryFormat.List
- BinaryFormat.Null
- BinaryFormat.Record
- BinaryFormat.SignedInteger16
- BinaryFormat.SignedInteger32
- BinaryFormat.SignedInteger64
- BinaryFormat.Single
- BinaryFormat.Text
- BinaryFormat.Transform
- BinaryFormat.UnsignedInteger16
- BinaryFormat.UnsignedInteger32
- BinaryFormat.UnsignedInteger64
- BinaryFormat.7BitEncodedSignedInteger
- BinaryFormat.7BitEncodedUnsignedInteger
- Binary data
- Binary.ApproximateLength
- Binary.Buffer
- Binary.Combine
- Binary.Compress
- Binary.Decompress
- Binary.From
- Binary.FromList
- Binary.FromText
- Binary.InferContentType
- Binary.Length
- Binary.Range
- Binary.Split
- Binary.ToList
- Binary.ToText
- Binary.View
- Binary.ViewError
- Binary.ViewFunction
- Byte.From
C
- Cdm.Contents
- Character.FromNumber
- Character.ToNumber
- Combiner.CombineTextByDelimiter
- Combiner.CombineTextByEachDelimiter
- Combiner.CombineTextByLengths
- Combiner.CombineTextByPositions
- Combiner.CombineTextByRanges
- Comparer.FromCulture
- Comparer.Ordinal
- Comparer.OrdinalIgnoreCase
- Controlling byte order
- Csv.Document
- Cube.AddAndExpandDimensionColumn
- Cube.AddMeasureColumn
- Cube.ApplyParameter
- Cube.AttributeMemberId
- Cube.AttributeMemberProperty
- Cube.CollapseAndRemoveColumns
- Cube.Dimensions
- Cube.DisplayFolders
- Cube.MeasureProperties
- Cube.MeasureProperty
- Cube.Measures
- Cube.Parameters
- Cube.Properties
- Cube.PropertyKey
- Cube.ReplaceDimensions
- Cube.Transform
- Currency.From
D
- DateTime.AddZone
- DateTime.Date
- DateTime.FixedLocalNow
- DateTime.From
- DateTime.FromFileTime
- DateTime.FromText
- DateTime.IsInCurrentHour
- DateTime.IsInCurrentMinute
- DateTime.IsInCurrentSecond
- DateTime.IsInNextHour
- DateTime.IsInNextMinute
- DateTime.IsInNextNHours
- DateTime.IsInNextNMinutes
- DateTime.IsInNextNSeconds
- DateTime.IsInNextSecond
- DateTime.IsInPreviousHour
- DateTime.IsInPreviousMinute
- DateTime.IsInPreviousNHours
- DateTime.IsInPreviousNMinutes
- DateTime.IsInPreviousNSeconds
- DateTime.IsInPreviousSecond
- DateTime.LocalNow
- DateTime.Time
- DateTime.ToRecord
- DateTime.ToText
- Date.AddDays
- Date.AddMonths
- Date.AddQuarters
- Date.AddWeeks
- Date.AddYears
- Date.Day
- Date.DayOfWeek
- Date.DayOfWeekName
- Date.DayOfYear
- Date.DaysInMonth
- Date.EndOfDay
- Date.EndOfMonth
- Date.EndOfQuarter
- Date.EndOfWeek
- Date.EndOfYear
- Date.From
- Date.FromText
- Date.IsInCurrentDay
- Date.IsInCurrentMonth
- Date.IsInCurrentQuarter
- Date.IsInCurrentWeek
- Date.IsInCurrentYear
- Date.IsInNextDay
- Date.IsInNextMonth
- Date.IsInNextNDays
- Date.IsInNextNMonths
- Date.IsInNextNQuarters
- Date.IsInNextNWeeks
- Date.IsInNextNYears
- Date.IsInNextQuarter
- Date.IsInNextWeek
- Date.IsInNextYear
- Date.IsInPreviousDay
- Date.IsInPreviousMonth
- Date.IsInPreviousNDays
- Date.IsInPreviousNMonths
- Date.IsInPreviousNQuarters
- Date.IsInPreviousNWeeks
- Date.IsInPreviousNYears
- Date.IsInPreviousQuarter
- Date.IsInPreviousWeek
- Date.IsInPreviousYear
- Date.IsInYearToDate
- Date.IsLeapYear
- Date.Month
- Date.MonthName
- Date.QuarterOfYear
- Date.StartOfDay
- Date.StartOfMonth
- Date.StartOfQuarter
- Date.StartOfWeek
- Date.StartOfYear
- Date.ToRecord
- Date.ToText
- Date.WeekOfMonth
- Date.WeekOfYear
- Date.Year
- DB2.Database
- Decimal.From
- Diagnostics.ActivityId
- Diagnostics.Trace
- DirectQueryCapabilities.From
- Double.From
- Duration.Days
- Duration.From
- Duration.FromText
- Duration.Hours
- Duration.Minutes
- Duration.Seconds
- Duration.ToRecord
- Duration.TotalDays
- Duration.TotalHours
- Duration.TotalMinutes
- Duration.TotalSeconds
- Duration.ToText
E
F
G
H
I
L
- Lines.FromBinary
- Lines.FromText
- Lines.ToBinary
- Lines.ToText
- List.Accumulate
- List.AllTrue
- List.Alternate
- List.AnyTrue
- List.Average
- List.Buffer
- List.Combine
- List.ConformToPageReader
- List.Contains
- List.ContainsAll
- List.ContainsAny
- List.Count
- List.Covariance
- List.Dates
- List.DateTimes
- List.DateTimeZones
- List.Difference
- List.Distinct
- List.Durations
- List.FindText
- List.First
- List.FirstN
- List.Generate
- List.InsertRange
- List.Intersect
- List.IsDistinct
- List.IsEmpty
- List.Last
- List.LastN
- List.MatchesAll
- List.MatchesAny
- List.Max
- List.MaxN
- List.Median
- List.Min
- List.MinN
- List.Mode
- List.Modes
- List.NonNullCount
- List.Numbers
- List.Percentile
- List.PositionOf
- List.PositionOfAny
- List.Positions
- List.Product
- List.Random
- List.Range
- List.RemoveFirstN
- List.RemoveItems
- List.RemoveLastN
- List.RemoveMatchingItems
- List.RemoveNulls
- List.RemoveRange
- List.Repeat
- List.ReplaceMatchingItems
- List.ReplaceRange
- List.ReplaceValue
- List.Reverse
- List.Select
- List.Single
- List.SingleOrDefault
- List.Skip
- List.Sort
- List.Split
- List.StandardDeviation
- List.Sum
- List.Times
- List.Transform
- List.TransformMany
- List.Union
- List.Zip
- Logical.From
- Logical.FromText
Understanding the Date.EndOfQuarter Function
The Date.EndOfQuarter function in Power Query is used to return the last day of the quarter that a given date falls in. For example, if you have a date of January 15th, 2022, the Date.EndOfQuarter function would return March 31st, 2022, as this is the last day of the first quarter of the year.
To use the Date.EndOfQuarter function, you simply need to pass a date value to it. For example, if you have a column named “Date” in your data table, you could create a new column named “End of Quarter” with the following formula:
= Table.AddColumn(#”PreviousStep”, “End of Quarter”, each Date.EndOfQuarter([Date]))
This would create a new column in your data table that contains the last day of the quarter for each date in the "Date" column.
The M Code Behind Date.EndOfQuarter
Now that we understand what the Date.EndOfQuarter function does, let's take a closer look at the M code behind it. The function is actually quite simple, and consists of just a few lines of code:
let
EndOfQuarter = (date) => Date.EndOfQuarter(date),
#”End of Quarter” = EndOfQuarter
in
#”End of Quarter”
Let's break down each of these lines of code to better understand what's happening:
1. The first line of code creates a new variable named "EndOfQuarter" and assigns it an anonymous function. This function takes a single argument, "date", and simply calls the built-in Date.EndOfQuarter function with that argument.
2. The second line of code creates a new variable named "#End of Quarter" and assigns it the value of the "EndOfQuarter" variable we defined in the previous line.
3. The third line of code simply returns the value of the "#End of Quarter" variable, which is our anonymous function that calls the Date.EndOfQuarter function.
So, essentially, the Date.EndOfQuarter function is just a very simple wrapper around the built-in Power Query function of the same name. By creating this wrapper function, we're able to pass dates to it more easily and incorporate it into our data transformations.
Using Date.EndOfQuarter in Your Projects
Now that we understand the M code behind the Date.EndOfQuarter function, let's take a look at a few practical examples of how you can use it in your own projects.
Calculating Quarterly Averages
One common use case for the Date.EndOfQuarter function is to calculate quarterly averages. For example, if you have a sales data table with a "Date" column and a "Revenue" column, you could use the following formula to calculate the average revenue per quarter:
= Table.Group(#”PreviousStep”, Date.EndOfQuarter([Date]), “Quarter”, {{“Quarterly Average Revenue”, each List.Average([Revenue]), type number}})
This formula groups the sales data by the last day of the quarter, and then calculates the average revenue for each quarter using the List.Average function.
Filtering Data by Quarter
Another useful application of the Date.EndOfQuarter function is to filter data by quarter. For example, if you only want to analyze data from the first quarter of the year, you could use the following formula to filter your data table:
= Table.SelectRows(#”PreviousStep”, each Date.EndOfQuarter([Date]) = #date(Year([Date]), 3, 31))
This formula selects only the rows where the last day of the quarter is March 31st, which would include data from the first quarter of the year.
The Date.EndOfQuarter function in Power Query is a powerful tool that can help you manipulate and analyze date data in new and interesting ways. By understanding the M code behind this function, you can gain a deeper appreciation for how it works and how you can use it in your own projects. Whether you're calculating quarterly averages, filtering data by quarter, or using it in some other way, the Date.EndOfQuarter function is a valuable addition to your Power Query toolkit.