query_builder Module

Fluent query builder for constructing OData queries.

Provides a type-safe, discoverable interface for building complex queries against Dataverse tables with method chaining.

Example::

# Via client (recommended) -- flat iteration over records
from PowerPlatform.Dataverse.models import col


for record in (client.query.builder("account")
               .select("name", "revenue")
               .where(col("statecode") == 0)
               .where(col("revenue") > 1_000_000)
               .order_by("revenue", descending=True)
               .top(100)
               .execute()):
    print(record["name"])


# With composable expression tree
from PowerPlatform.Dataverse.models import col, raw


for record in (client.query.builder("account")
               .select("name", "revenue")
               .where((col("statecode") == 0) | (col("statecode") == 1))
               .where(col("revenue") > 100000)
               .top(100)
               .execute()):
    print(record["name"])


# Lazy paged iteration (one QueryResult per HTTP page)
for page in (client.query.builder("account")
             .select("name")
             .execute_pages()):
    process_batch(page)


# Get results as a pandas DataFrame
df = (client.query.builder("account")
      .select("name", "telephone1")
      .where(col("statecode") == 0)
      .top(100)
      .execute()
      .to_dataframe())

Classes

ExpandOption

Structured options for an $expand navigation property.

Allows specifying nested $select, $filter, $orderby, and $top options for a single navigation property expansion, following the OData $expand syntax.

Example:


   # Expand Account_Tasks with nested options
   opt = (ExpandOption("Account_Tasks")
          .select("subject", "createdon")
          .filter("contains(subject,'Task')")
          .order_by("createdon", descending=True)
          .top(5))

   query = (client.query.builder("account")
            .select("name")
            .expand(opt)
            .execute())
QueryBuilder

Fluent interface for building and executing OData queries against a sync client.

Provides method chaining for constructing complex queries with composable filter expressions. Can be used standalone (via build()) or bound to a client (via execute).

QueryParams

Typed dictionary returned by QueryBuilder.build().

Provides IDE autocomplete when passing build results to client.records.list() manually.