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
Overview of Combiner.CombineTextByPositions
The Combiner.CombineTextByPositions function allows you to combine text values from different columns by specifying the positions of the columns. For example, if you have three columns (Column1, Column2, and Column3), you can use the function to combine the values in Column1 and Column3 into a single column, while ignoring the values in Column2.
The function takes three arguments:
– The table to operate on
– A list of positions (in the form of integers) that specify the columns to combine
– An optional delimiter to use between the combined values (default is a comma)
Here is the basic syntax of the function:
Combiner.CombineTextByPositions(table as table, positions as list, optional delimiter as text)
How the Function Works
To understand how the Combiner.CombineTextByPositions function works, let's take a look at the M code behind it.
let
CombineTextByPositions = (table as table, positions as list, optional delimiter as text) =>
let
columns = Table.ColumnNames(table),
selectedColumns = List.Select(columns, each List.Contains(positions, columns.IndexOf(_))),
combinedColumnName = “Combined”,
combinedColumn = Table.AddColumn(table, combinedColumnName, each Text.Combine(List.Transform(List.Select(selectedColumns, each not List.IsEmpty(_)), each Text.From(_)), delimiter), type text),
removedColumns = List.RemoveFirstN(List.RemoveItems(columns, selectedColumns), 1),
reorderedColumns = List.InsertRange(List.InsertRange(removedColumns, positions, selectedColumns), 0, {combinedColumnName}),
outputTable = Table.SelectColumns(combinedColumn, reorderedColumns)
in
outputTable
in
CombineTextByPositions
The function first takes the table and the list of positions as input. It then gets a list of all the column names in the table and selects only those columns that correspond to the positions specified in the list.
Next, the function creates a new column with a unique name (Combined by default) and uses the Text.Combine function to concatenate the values in the selected columns into a single text value, using the specified delimiter (comma by default).
The function then removes the original selected columns from the table and inserts the combined column in their place. Finally, it reorders the columns in the table to match the original order, and returns the resulting table.
Examples of Usage
Let's look at a few examples of how you can use the Combiner.CombineTextByPositions function in Power Query.
Example 1: Combining First and Last Names
Suppose you have a table with columns for first name, last name, and email address, and you want to combine the first and last names into a single column.
Here is the M code you can use:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WMlSK1YlWMjI3VIrKzSspVrISkkxMSWnKzUnNyktSgDmJ4Q==”, BinaryEncoding.Base64)), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#”First Name” = _t, #”Last Name” = _t, #”Email Address” = _t]),
#”Combined First and Last Names” = Combiner.CombineTextByPositions(Source, {0, 1}),
#”Removed Email Address” = Table.SelectColumns(#”Combined First and Last Names”, {“Combined”, “Email Address”})
in
#”Removed Email Address”
Example 2: Combining Multiple Columns with Custom Delimiter
Suppose you have a table with multiple columns, and you want to combine the values in columns 2, 4, and 6 into a single column, using a custom delimiter (|).
Here is the M code you can use:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45Wqk8vyklR0lEyMjQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyNjc0MNQwVrIyVrAwN9EokxJbIzUwM9DQAA==”, 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]),
#”Combined Columns 2, 4, and 6 with Custom Delimiter” = Combiner.CombineTextByPositions(Source, {1, 3, 5}, “|”),
#”Removed Other Columns” = Table.SelectColumns(#”Combined Columns 2, 4, and 6 with Custom Delimiter”, {“Combined”})
in
#”Removed Other Columns”
The Combiner.CombineTextByPositions function is a powerful tool that allows you to combine text values from different columns in Power Query. By understanding the M code behind the function, you can customize its behavior to suit your needs and make the most of your data.