github boringdata/boring-semantic-layer v0.3.9

9 hours ago

What's Changed

Features

  • Measure filtering: Support filtering by measures in query() (#178)
  • MCP tool: Add search_dimension_values MCP tool for discovering dimension values

Refactoring

  • Serialization: Move serialization into dedicated package with singledispatch architecture
  • xorq vendored types: Convert to_untagged() to return xorq-vendored ibis types at the leaf (#203)
  • Eliminate cloudpickle: Remove cloudpickle from xorq tag serialization (v2.0)
  • Deduplicate: Consolidate deserialization, join deprecation, and xorq unwrapping

Bug Fixes

  • Preserve mutated group-by columns in join_many pre-aggregation (#187)
  • Add join methods to SemanticFilter for from_config compatibility (#186)
  • Support multi-level derived dimensions in filters (#182)
  • Strip VARCHAR(N) length from dtype strings in _make_schema (#183)
  • Make join_one use left outer join by default (Malloy semantics)
  • Preserve unmatched left-join rows in pre-aggregation
  • Resolve ambiguous field reference in multi-way joins with shared column names
  • Propagate is_right_of_many through nested joins in pre-aggregation
  • Compute actual ibis join depth for column rename suffix
  • Resolve unprefixed measure names via suffix matching on joined models
  • Split join expression in from_tagged to prevent cross-join on round-trip

Performance

  • Compute COUNT DISTINCT on raw source table when possible

Full Changelog: v0.3.8...v0.3.9

Don't miss a new boring-semantic-layer release

NewReleases is sending notifications on new releases.