Skip to content

What's New in Version 1.26.2

August 13, 20261:47 AM UTC

Version 1.26.2 of the relationalai Python package is now available!

To upgrade, activate your virtual environment and run the following command:

Terminal window
pip install --upgrade relationalai
  • The new rai usage command reports your account’s RAI consumption and estimated cost, broken down by compute pool, with date filters and table, JSON, CSV, or HTML output. Cost figures exclude storage and are estimates rather than invoices, and totals are lower bounds when PyRel can’t identify a compute pool’s machine family.

    For example, write a July 2026 usage report to a CSV file:

    Terminal window
    rai usage --start 2026-07-01 --end 2026-07-31 --format csv --output-file usage.csv
  • Model deployment now builds large models faster by removing redundant work. In one model, the initial build was about 2.4× faster. Savings depend on your model and the size of your Snowflake warehouse.

  • A query that computes a value (such as a sum or a true/false flag) in one select() step and selects that same value again in a later select() now returns the correct rows. Previously, it could return too few rows or fail with an error.

  • In a deployed model, computing an aggregate value (such as a sum) and then filtering on it now returns the correct result. Previously, if the definition used a union to combine several alternatives, the value could be inflated due to over-counting.

  • If you compute an aggregate with .per() and use it only to filter rows without also selecting it, the query now returns the expected rows. Previously, it could return no rows at all.

  • Some not_() checks in a deployed model are now much faster. In one case, a query that ran for over 13 minutes now finishes in about 13 seconds.

  • PyRel now raises a clear UnsupportedOperation error when Louvain, Infomap, and label propagation algorithms are used in a deployed model. These algorithms are currently not supported.

  • Grouping an aggregate by a key that has no values now raises a clear GroupKeyHasNoDomain error instead of unexpectedly combining your per-group results into one overall total.

  • Deploying a model that uses quoted, case-sensitive Snowflake names no longer fails with an “Object does not exist or not authorized” error.

  • When more than one Snowpark session is active, PyRel now surfaces Snowflake’s multiple-active-sessions error (1409) instead of quietly opening a new connection, so you can choose which session to use.

  • If you pass your own Snowpark session to create_config(), deployment now uses that session when it switches Snowflake roles, instead of creating a separate one.

  • Explicitly setting reasoners.logic.incremental_maintenance to "off" in Python now takes effect. Previously, PyRel could reset it to "auto", which turned incremental maintenance on.

  • Some match (|) expressions that used to fail with an is unground error (for example, 'pet' is unground) now work correctly.

  • Fixed a bug that could cause concept tables in a deployed model to be updated on the wrong schedule.

  • Fixed an edge case where a query could mix up similarly named properties on different kinds of entities.

  • Fixed an edge case where a deployed model could apply a definition even when its condition wasn’t met.

  • Fixed an edge case where matching an entity by its identifying property could return a match even when no such entity existed.

  • Fixed an edge case where an equality between two values in a query condition could incorrectly return no rows.