← Back to all sparks
O

orbital

ANALYTICS
Velocity0.0

Turn Tidymodels Workflows Into Series of Equations

Turning fitted tidymodels into SQL, one model family at a time — and the boosting engines just landed.

tidymodelsin-database-scoringsql-generationmodel-deploymentr-package
Current state
orbital converts a fitted tidymodels workflow into a database expression so prediction runs where the data lives, no R session in the loop. Its value is entirely a function of coverage, and 0.5.0 was the largest coverage release yet: catboost and lightgbm boosted trees, rpart decision trees, earth-backed MARS, glmnet multinomial regression, and both randomForest and ranger random forests, all for numeric, class, and probability predictions. The 0.5.1 follow-up is corrective, fixing SQL that Snowflake and other engines rejected because it cast booleans directly to numeric.
Where it's heading
The package has been working outward in rings: recipe preprocessing steps first, then model types, then post-processing via the tailor package in 0.4.0, with show_query() added so users can inspect what actually gets sent. Recent releases show the constraint shifting from R-side translation to SQL dialect compatibility — the bugs now are about what a specific database will accept, not whether a model can be expressed. estimate_orbital_size() in 0.5.1 acknowledges the other practical limit, since generated expressions can grow large enough to matter before you generate them.
Prediction
With the major boosting and ensemble engines covered, expect the next releases to keep chasing dialect-specific SQL correctness across warehouses rather than adding model families.

Recent moves

  1. 1mo ago

    Snowflake-compatible SQL for dummy and NA steps

    step_dummy() and step_indicate_na() now emit SQL that works on Snowflake and other databases that refuse a direct boolean-to-numeric cast. Adds estimate_orbital_size() to predict an expression's character count without generating it, which matters because generated SQL for tree ensembles can get unwieldy.

    View source ↗
  2. 5mo ago

    catboost, lightgbm, ranger and four more model families translate to SQL

    ⚡ SPARK

    The coverage release that brings the models teams actually deploy into scope: catboost and lightgbm boosted trees, rpart decision trees, earth MARS, glmnet multinomial regression, and randomForest and ranger forests, across numeric, class, and probability predictions. A separate_trees argument gives tree ensembles a way to manage the size of the generated expression.

    View source ↗
  3. 8mo ago

    Compatibility with new xgboost versions

    A single-line release restoring compatibility with newer xgboost releases. Routine upstream tracking of the kind a translation layer accumulates.

    View source ↗
  4. 8mo ago

    Post-processing adjustments from tailor become translatable

    Extends translation past the model itself to the tailor package's post-processing — equivocal zones, numeric range clamping, probability thresholds, and custom prediction adjustments — plus their workflow integration. A show_query() method lets users see the emitted SQL directly.

    View source ↗
  5. 11mo ago

    PCA step translation bugs cleared

    Four related fixes to PCA steps: failures above 99 trained predictors, zero-valued terms emitted by step_pca_sparse(), errors depending on predictor selection, and large PCA results failing against databases. Narrow corrections within an already-supported step family.

    View source ↗
  6. 1y ago

    Class and probability predictions arrive, with glm and xgboost

    Adds a type argument for prediction type and extends support to logistic_reg with glm, boost_tree with xgboost, and decision_tree with partykit for class and probability predictions. The first release where orbital handles classification output rather than numeric prediction alone, plus an augment() method and a prefix argument for renaming prediction columns.

    View source ↗