AzureStorage.Tables

Accessing Data

Returns a navigation table of Azure Table Storage tables from the specified storage account.

Examples on this page use shared sample tables. View them to understand the input data before reading the examples below.

Syntax

AzureStorage.Tables(account as text, optional options as nullable record) as table

Parameters

NameTypeRequiredDescription
accounttextYesThe Azure Storage account name (e.g., "mystorageaccount") or the full Table service URL (e.g., "https://mystorageaccount.table.core.windows.net").
optionsrecordNoAn optional record with additional connection options.

Return Value

tableA navigation table where each row represents an Azure Table Storage table, with a Data column containing the table's entities as a Power Query table.

Remarks

AzureStorage.Tables connects to Azure Table Storage and returns a navigation table listing all tables in the storage account. Each table's entities are accessible by drilling into the Data column of the corresponding row. Azure Table Storage is a NoSQL, schema-less key-value store — unlike relational databases, each entity may have a different set of properties. However, every entity shares the three system properties: PartitionKey, RowKey, and Timestamp.

Navigation table and entity columns: The top-level result has one row per table, with Name and Data columns. Drilling into Data returns a table of entities where every row has at minimum: - PartitionKey (text) — the logical partition identifier. Entities with the same PartitionKey are stored together and can be queried efficiently. - RowKey (text) — unique identifier for the entity within its partition. The combination of PartitionKey + RowKey uniquely identifies every entity. - Timestamp (datetimezone) — the last-modified timestamp, maintained automatically by Azure. - Additional application-defined columns vary by entity and may not be present on all rows.

Authentication: Supports Account Key (storage account name + access key) and Shared Access Signature (SAS). Configure credentials in the Power Query data source settings dialog. Azure Active Directory (Entra ID) authentication is available in recent versions of Power BI Desktop. Use the storage account name or service URL as the credential scope.

Query folding: Limited. Equality filters on PartitionKey and RowKey can fold to the Azure Table Storage REST API, significantly reducing the data returned. Other filter conditions and column selections are applied in Power Query after retrieval. For workloads that require heavy filtering, consider using OData.Feed against the Table Storage OData endpoint (https://mystorageaccount.table.core.windows.net) for finer control over $filter parameters.

Pagination: Azure Table Storage returns at most 1,000 entities per API request. Power Query automatically follows continuation tokens to retrieve all entities from large tables.

Power BI Service: Direct cloud refresh is supported when using Account Key or SAS authentication and the storage account is network-accessible. For storage accounts behind firewalls or private endpoints, use a VNet gateway or managed identity.

Examples

Example 1: List all tables in a storage account

```powerquery

AzureStorage.Tables("mystorageaccount")

Example 2: Connect using the full Table service URL

```powerquery

AzureStorage.Tables("https://mystorageaccount.table.core.windows.net")

Example 3: Read all entities from a specific table

```powerquery

let
    Account = AzureStorage.Tables("mystorageaccount"),
    SalesTable = Account{[Name="Sales"]}[Data]
in
    SalesTable

Example 4: Filter entities by PartitionKey to leverage server-side folding

```powerquery

let
    Account = AzureStorage.Tables("mystorageaccount"),
    Events = Account{[Name="Events"]}[Data],
    NorthAmerica = Table.SelectRows(Events, each [PartitionKey] = "NorthAmerica")
in
    NorthAmerica

Compatibility

Power BI Desktop Power BI Service Excel Desktop Excel Online Dataflows Fabric Notebooks