Changelog
Unreleased
Added
SliceSpec: new wildcard variant — setwhere: <column_name>at the spec level (instead of listingvalues) to auto-populate slice values from the column's distinct values at query time. Supports simple and dot-qualified column names.
v0.1.4 — 2026-03-23
Changed
MetricSpec: removedaggregationfield. Aggregation type is now inferred from the SQL function embedded innumerator(anddenominator). Ratio is implied whendenominatoris present. Validation enforces that bothnumeratoranddenominator(when present) contain a recognised aggregate function call (SUM,AVG,COUNT,MIN,MAX).
Migration guide
- Remove
aggregation:from all metric YAML specs. - Ensure
numerator(anddenominatorwhen present) contain an explicit aggregate function call such asSUM(col),AVG(col),COUNT(*),MIN(col), orMAX(col).
Added
MetricSpec: new optionalentitiesfield — declares which entity columns the metric supports for disaggregation (e.g.entities: [user_id, device_id]). Must be a non-empty list if provided.MetricCompute.compute(): newby_entityparameter — groups results by an entity column declared in each metric'sentitieslist; raisesQueryBuildErrorif any metric does not support the requested entity column.- Standard output schema gains an
entity_idcolumn (position 4, betweenperiod_end_dateandmetric_name);Nonewhenby_entityis not set. - Added PostgreSQL backend support via
ibis-framework[postgres](pip install "aitaem[postgres]") - New
aitaem.connectors.backend_specsmodule withDuckDBConfig,BigQueryConfig, andPostgresConfigdataclasses — centralizes backend field validation for all connectors - PostgreSQL source URI format:
postgres://schema/table(e.g.postgres://public/orders)
v0.1.3 — 2026-03-17
- New
aitaem.helpersmodule for user-facing convenience functions - New
load_csvs_to_duckdb(csv_path, db_path, overwrite=True)helper — loads a single CSV or all top-level CSVs in a folder into a DuckDB file and returns a connectedIbisConnector MetricSpec: unknown-fields check now usesdataclasses.fields()instead of a hard-coded set- README: updated CSV loading example to use
load_csvs_to_duckdb
v0.1.2 — 2026-03-14
- Updated installation instructions to use PyPI
- Added CI, PyPI version, and Python version badges to README
v0.1.1
- Bug fixes and internal improvements
v0.1.0 — Initial release
MetricSpec,SliceSpec,SegmentSpecwith YAML parsing and validationSpecCachewith eager loading from files, directories, or stringsConnectionManagerwith DuckDB and BigQuery supportMetricCompute— primary user interface for computing metrics- Cross-product (composite) slice support
- Standard 9-column output DataFrame
- Example ad campaigns dataset with sample YAML specs
For full release diffs, see GitHub Releases.