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
In this article, we will explore the M code behind the List.RemoveLastN function and how it can be used to manipulate data in Power Query.
Understanding List.RemoveLastN
The List.RemoveLastN function is used to remove the last n items from a list. The function takes two arguments: the list and the number of items to remove. The syntax of the function is as follows:
List.RemoveLastN(list as list, count as number) as list
The function returns a list that contains all the items of the input list except the last n items. If the count argument is greater than or equal to the number of items in the list, the function returns an empty list.
The M Code Behind List.RemoveLastN
The M code behind the List.RemoveLastN function is relatively simple. It consists of a single expression that uses the List.Take function to extract the first n items from the list and the List.Count function to calculate the number of items in the list.
list => List.Take(list, List.Count(list) – count)
The code above takes the list as input and returns a new list that contains all the items of the input list except the last n items. The List.Count function is used to determine the number of items in the list, and this value is subtracted from the count argument to determine the number of items to extract using the List.Take function.
Using List.RemoveLastN in Power Query
The List.RemoveLastN function can be used in a wide range of scenarios in Power Query. Here are a few examples:
Example 1: Removing the last row from a table
Suppose you have a table that contains data for multiple years, and you want to remove the last row, which contains data for the current year. You can use List.RemoveLastN to achieve this.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WcixKzQEYwM6ItlSK1YhJLSjKLSjXyC8vzEnNzixJLEjMzNQ0tfPz89VSi0uSS0rKU9JzAwMzE2NzZJNTYwBkNz8wSzkMlMzUDA0JzUwpSS0Gc4tLzcxJzC2JzchJzE2NLLOz8pPSwqSaxJLTQ0sQrNzs8vOKM8q2SzJzUxNzVIBlG2E4JLsV5RZkZqTk64YyBzUvcvzCvJzI0vT0lMS8wBQA=”, BinaryEncoding.Base64)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#”Year/Month” = _t, Sales = _t]),
#”Removed Last Row” = Table.RemoveLastN(Source, 1)
in
#”Removed Last Row”
In the code above, the Table.RemoveLastN function is used to remove the last row from the table. The count argument is set to 1 to remove the last row.
Example 2: Removing the last n rows from a table
Suppose you have a table that contains data for multiple years, and you want to remove the last n rows, which contain data for the current and previous years. You can use List.RemoveLastN to achieve this.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WcixKzQEYwM6ItlSK1YhJLSjKLSjXyC8vzEnNzixJLEjMzNQ0tfPz89VSi0uSS0rKU9JzAwMzE2NzZJNTYwBkNz8wSzkMlMzUDA0JzUwpSS0Gc4tLzcxJzC2JzchJzE2NLLOz8pPSwqSaxJLTQ0sQrNzs8vOKM8q2SzJzUxNzVIBlG2E4JLsV5RZkZqTk64YyBzUvcvzCvJzI0vT0lMS8wBQA=”, BinaryEncoding.Base64)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#”Year/Month” = _t, Sales = _t]),
#”Removed Last 2 Rows” = Table.FromList(List.RemoveLastN(Table.ToList(Source)[Column1], 2), Splitter.SplitByNothing(), {“Year/Month”, “Sales”}),
#”Changed Type” = Table.TransformColumnTypes(#”Removed Last 2 Rows”,{{“Year/Month”, type date}, {“Sales”, Int64.Type}})
in
#”Changed Type”
In the code above, the Table.ToList function is used to convert the table to a list, and then the List.RemoveLastN function is used to remove the last 2 rows from the list. The resulting list is then converted back to a table using the Table.FromList function.
Example 3: Removing the last n items from a list
Suppose you have a list of email addresses and you want to remove the last n items. You can use List.RemoveLastN to achieve this.
let
Source = {“john.doe@example.com”, “jane.doe@example.com”, “bob.smith@example.com”, “sara.jones@example.com”, “mike.brown@example.com”},
#”Removed Last 2 Items” = List.RemoveLastN(Source, 2)
in
#”Removed Last 2 Items”
In the code above, the List.RemoveLastN function is used to remove the last 2 items from the list of email addresses.
List.RemoveLastN is a powerful function that can be used for a wide range of data manipulation tasks in Power Query. By understanding the M code behind the function, you can gain a deeper understanding of how Power Query works and how to use it more effectively.