Chalk Notebooks
Run Python, query Chalk features, and install packages in a notebook.
Use Python cells to transform data, run Chalk queries, and display results. Cells share one Python session, so variables you assign in one cell are available to later cells. You can also read the named results of SQL cells and values from Input cells.
This Python cell reads the orders DataFrame from the SQL example,
selects completed orders, and prints their total revenue. The two completed orders total $214.50.
Select Run to replay the sample result; this example does not connect to a Python kernel.
Tabular results render as browsable tables. You can work with pandas, polars, pyarrow, and Chalk’s
own DataFrame. Leave a value as the cell’s last expression to display it.
Assign it to a variable when later cells need to transform, join, or plot it without repeating
the computation.
Run online and offline queries with the same ChalkClient methods you use
outside a notebook.
Leave a query call as the cell’s last expression to display its response as a table of features and values, with tabs for query metadata and the saved execution plan.
The Plan tab shows the saved execution plan. This example loads a recorded plan into the same interactive viewer used in notebooks. Select an operator to inspect it, or use the zoom controls to explore the graph.
Offline queries return before their work finishes. offline_query hands back a
Dataset as soon as the revision is created, and realizing that dataset waits
for the computation to complete, reporting progress while it waits:
dataset = client.offline_query(
input={"user.id": list(range(1000))},
output=["user.fraud_score"],
recompute_features=True,
)
# Waits for the revision to finish, then returns the rows.
df = dataset.to_pandas()A notebook’s kernel is a hosted Python environment, separate from your laptop and from your project’s repository.
The kernel does not have your project’s package on its path, so from src.models import User
raises ModuleNotFoundError. Refer to features by their string names instead:
from chalk.client import ChalkClient
client = ChalkClient()
client.query(input={"user.id": 1}, output=["user.fraud_score"])Or call load_features to bind the deployed feature classes into the session, and then use them
the way you would in your project:
client.load_features()
client.query(input={User.id: 1}, output=[User.fraud_score])load_features reads the feature classes from whatever deployment the client points at, so a
client scoped to a branch loads that branch’s features. To scope a client to a branch, see
Querying a branch.
The kernel ships with the chalk client and a data-science baseline that includes pandas, polars,
numpy, and Altair. It does not include every library you might reach for: matplotlib, plotly,
seaborn, scikit-learn, and xgboost are absent, and importing one of them raises
ModuleNotFoundError.
Install what you need from a Python cell with !uv pip install. Both pip and uv
are on the kernel’s path. This cell replays a recorded SciPy installation when it comes into view;
versions, timings, and downloads depend on your environment.
To browse installed packages in the dashboard, select the settings icon in the notebook’s upper-right toolbar, then scroll to Installed packages in Notebook settings. Start the kernel if it is stopped; the list loads once it is ready. Use the filter to find a package and check its version. This example shows SciPy and its NumPy dependency after the installation above.
To list what a particular notebook’s kernel already has, run
chalk notebook dependencies against it.
If a cell queries a branch-only feature through a ChalkClient() with no branch set, the query
doesn’t raise. The cell’s status still comes back SUCCESS, and the failure only shows up in the
result, as a message like Query output referenced undefined feature 'user.risk_score'. Pass
branch explicitly to the client constructed inside the cell to query that branch.