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
What is Expression.Identifier function?
The Expression.Identifier function is a built-in function in M language that is used to create unique identifiers for data tables. It takes an expression as input and returns a text value that is unique to that expression. It is commonly used in data transformation scenarios where there is a need to merge or join data tables based on a common key.
The syntax of the Expression.Identifier function is as follows:
Expression.Identifier(expression)
The expression parameter is the input value for which the unique identifier needs to be generated. It can be any valid M expression, such as a column name, a list of values, or a record.
How does Expression.Identifier function work?
The Expression.Identifier function uses a hashing algorithm to generate a unique text value for the input expression. The algorithm takes the input expression, converts it to a binary format, and then applies a set of mathematical operations to generate a hash value. The hash value is then converted to a text value using base 64 encoding. The resulting text value is guaranteed to be unique for any given input expression.
The unique identifiers generated by the Expression.Identifier function are used to join or merge data tables based on a common key. When two or more tables need to be merged, a common key column is identified, and the Expression.Identifier function is used to generate a unique identifier for each row in the key column. The unique identifiers are then used to match rows in the key column of the two tables and merge them into a single table.
Examples of using Expression.Identifier function
Here are some examples of using the Expression.Identifier function in Power Query:
Example 1: Generating unique identifiers for a column
Suppose you have a table with a column named "Name" that contains a list of names. You want to generate unique identifiers for each name in the column. Here is the M code that uses the Expression.Identifier function to achieve this:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WMjQ2VtJRMjQyNjQ2MlK0NzVQyS9XSEzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMjEwMzI3NtLQ0gQqVQjFqVQjNjJywpKMnW0sDSNjJxNU1NzQ0sbm1vYyBnZW5lcmF0ZWQgc2FtcGxlIA==”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Name = _t]),
#”Added Custom” = Table.AddColumn(Source, “ID”, each Expression.Identifier([Name]))
in
#”Added Custom”
This code creates a new column named "ID" in the table and uses the Expression.Identifier function to generate a unique identifier for each name in the "Name" column.
Example 2: Generating unique identifiers for multiple columns
Suppose you have two tables, "Table1" and "Table2," that you want to merge based on a common key. The key is a combination of two columns, "ID" and "Date." Here is the M code that uses the Expression.Identifier function to generate a unique identifier for each row in the key column:
let
Source1 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WMjQ2VtJRMjQyNjQ2MlK0NzVQyS9XSEzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMzRSMjEwMzI3NtLQ0gQqVQjFqVQjNjJywpKMnW0sDSNjJxNU1NzQ0sbm1vYyBnZW5lcmF0ZWQgc2FtcGxlIA==”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Date = _t, Value = _t]),
Source2 = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(“i45WMjQ2VtJRc03wz0lXKMnWBQgqVQjFqVQjNjJywpKMnW0sDSNjJxNU1NzQ0sbm1vYyBnZW5lcmF0ZWQgc2FtcGxlIA==”, BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Date = _t, Value = _t]),
#”Merged Queries” = Table.NestedJoin(Source1,{“ID”, “Date”},Source2,{“ID”, “Date”},”Table2″,JoinKind.LeftOuter),
#”Added Custom” = Table.AddColumn(#”Merged Queries”, “Key”, each Expression.Identifier([ID] & [Date])),
#”Expanded Table2″ = Table.ExpandTableColumn(#”Added Custom”, “Table2”, {“Value”}, {“Value”})
in
#”Expanded Table2″
This code creates a new column named "Key" in the merged table and uses the Expression.Identifier function to generate a unique identifier for each row in the key column.
The Expression.Identifier function is a powerful tool in Power Query that enables users to generate unique identifiers for data tables. It is commonly used in data transformation scenarios where there is a need to merge or join data tables based on a common key. The function uses a hashing algorithm to generate a unique text value for the input expression, which is then used as the key for merging tables. By using the Expression.Identifier function, users can perform complex data transformations in Power Query and gain valuable insights into their data.