Skip to main content

easyfabric.dax_models

Data models for DAX query generation from natural language questions.

dataclass

field

Enum

Any

Optional

AmbiguousQueryError Objects

class AmbiguousQueryError(Exception)

Raised when a question maps to multiple entities without clear intent.

__init__

def __init__(message: str, suggestions: list[str])

InvalidQueryError Objects

class InvalidQueryError(Exception)

Raised when a question cannot be parsed into valid DAX.

AggregationType Objects

class AggregationType(str, Enum)

Supported aggregation functions in DAX.

SUM

AVERAGE

COUNT

DISTINCT_COUNT

MIN

MAX

ColumnMetadata Objects

@dataclass
class ColumnMetadata()

Metadata about a column in the model.

name

table_name

data_type

is_dimension

True for dimensions, False for facts

is_date

description

MeasureMetadata Objects

@dataclass
class MeasureMetadata()

Metadata about a pre-written DAX measure.

name

table_name

expression

data_type

description

format_string

RelationshipMetadata Objects

@dataclass
class RelationshipMetadata()

Metadata about a relationship between tables.

from_table

from_column

to_table

to_column

ModelContext Objects

@dataclass
class ModelContext()

Extracted metadata from a Model instance for DAX generation. This provides context for both rule-based and LLM-based generation.

tables

Table names

columns

All columns with metadata

measures

Pre-written DAX measures

relationships

Table relationships

model_name

description

get_columns_for_table

def get_columns_for_table(table_name: str) -> list[ColumnMetadata]

Get all columns for a specific table.

get_measures_for_table

def get_measures_for_table(table_name: str) -> list[MeasureMetadata]

Get all measures for a specific table.

find_column

def find_column(column_name: str,
table_name: Optional[str] = None) -> Optional[ColumnMetadata]

Find a column by name, optionally filtered by table.

find_measure

def find_measure(
measure_name: str,
table_name: Optional[str] = None) -> Optional[MeasureMetadata]

Find a measure by name, optionally filtered by table.

find_columns_by_pattern

def find_columns_by_pattern(pattern: str) -> list[ColumnMetadata]

Find columns matching a pattern (substring or fuzzy match).

find_measures_by_pattern

def find_measures_by_pattern(pattern: str) -> list[MeasureMetadata]

Find measures matching a pattern (substring or fuzzy match).

QueryFilter Objects

@dataclass
class QueryFilter()

A filter condition in a query.

column

operator

"=", ">", "<", ">=", "<=", "in", "between"

value

QueryIntent Objects

@dataclass
class QueryIntent()

Parsed intent from a natural language question.

aggregation

measure

group_by_columns

filters

order_by_column

order_by_measure

order_ascending

top_n

bottom_n

time_intelligence

"YTD", "MTD", "YoY", etc.

confidence

raw_elements