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
To better understand how the Html.Table function works, it is important to dive into the M code that powers it. In this article, we will explore the M code behind the Html.Table function and provide examples of how it can be used to extract data from HTML tables.
What is the Html.Table function?
The Html.Table function is a built-in function in Power Query that allows users to extract tables from HTML pages and convert them into usable data structures. This function takes a single input parameter, which is the HTML content of the webpage, and outputs a table containing the data from the HTML table.
How does the Html.Table function work?
The Html.Table function works by parsing the HTML content of a webpage and identifying the table elements within the HTML. It then extracts the data from these tables and converts them into a structured table format that can be used in data analysis.
The M code behind the Html.Table function is responsible for performing this parsing and extraction process. The code uses a combination of built-in functions and custom functions to extract the data from the HTML tables and transform it into a usable format.
Exploring the M code behind the Html.Table function
The M code behind the Html.Table function can be broken down into several distinct steps, including:
Step 1: Retrieving the HTML content of the webpage
The first step in the M code behind the Html.Table function is to retrieve the HTML content of the webpage. This is typically done using the Web.Page function, which retrieves the HTML content of a webpage and returns it as text.
Step 2: Parsing the HTML content
Once the HTML content has been retrieved, the M code behind the Html.Table function must parse the HTML and identify the table elements within it. This is typically done using the Xml.Tables function, which converts the HTML content into an XML format and identifies all of the table elements within it.
Step 3: Extracting table data
Once the table elements have been identified, the M code behind the Html.Table function must extract the data from each table and convert it into a usable format. This is typically done using a combination of built-in functions and custom functions that are designed to extract specific types of data from HTML tables.
Step 4: Combining table data
Once the data has been extracted from each table, the M code behind the Html.Table function must combine it into a single table structure. This is typically done using the Table.Combine function, which combines multiple tables into a single table structure.
Step 5: Cleaning and transforming the data
Once the data has been combined into a single table structure, the M code behind the Html.Table function must clean and transform the data to make it usable in data analysis. This is typically done using a combination of built-in functions and custom functions that are designed to clean and transform specific types of data.
Using the Html.Table function in Power Query
Now that we have explored the M code behind the Html.Table function, let’s take a look at some examples of how it can be used in Power Query.
Example 1: Extracting data from a single HTML table
The following M code demonstrates how to extract data from a single HTML table using the Html.Table function:
let
html = Web.Page(“https://www.example.com/table.html”),
table = html{0}[Data],
data = Table.FromColumns(table, {“Column1”, “Column2”, “Column3”})
in
data
This code retrieves the HTML content of the webpage located at https://www.example.com/table.html, identifies the first table element within it, extracts the data from the table, and converts it into a single table structure with columns named Column1, Column2, and Column3.
Example 2: Extracting data from multiple HTML tables
The following M code demonstrates how to extract data from multiple HTML tables using the Html.Table function:
let
html = Web.Page(“https://www.example.com/tables.html”),
tables = html{0}[Data],
data = Table.Combine(List.Transform(tables, each Table.FromColumns(_, {“Column1”, “Column2”, “Column3”})))
in
data
This code retrieves the HTML content of the webpage located at https://www.example.com/tables.html, identifies all of the table elements within it, extracts the data from each table, combines the data into a single table structure, and cleans and transforms the data to make it usable in data analysis.
The Html.Table function in Power Query is a powerful tool for extracting data from HTML tables and converting it into a usable format for data analysis. By understanding the M code behind this function, you can better understand how it works and how to use it in your own data analysis projects.