The Notebook feature provides an interactive Python environment embedded within each report. Use it to explore parameters, inspect query results, visualize data, and push outputs back into your final report—no local Python setup required.
Notebooks consist of cells (code + output blocks):
PyQueryHub includes an intelligent AI assistant that can generate Python code for your notebook cells based on natural language descriptions:

Using the AI Assistant:
AI Assistant Features:
Example prompts:
Available Context: The AI assistant has access to:
print_df(), run_query(), and all Python/pandas methodsOn load, the Notebook initializes a Pyodide environment and injects data from your report:
ParamsObject: Access and pretty‑print your report’s parameters:
If You edit parameters in the Parameters tab, click on Run Queries to see changes reflected in both params and dataset content.
DataFrameContainer: Wraps your query results as pandas DataFrames, complete with row/column counts:

These helpers render as HTML tables and images directly in the notebook.
Your report’s queries run before the notebook loads and are passed in via the datasets variable. Example:

Use print_df to display a DataFrame in the notebook. You can also use df.head() to show the first few rows of any DataFrame.
Toggle Add to Report Builder on any cell to include that cell’s final output (HTML table or image) in your report when saving. This lets you mix narrative text with live data insights.

Puedes enviar notificaciones directamente desde una celda del notebook usando la función integrada send_alert(). Esto te permite activar alertas en cualquier canal configurado (Slack, Discord, Telegram, Email) basado en tu análisis de datos.
send_alert(channel, title, text, level)
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
channel |
string | Sí | El alias del canal al que enviar la alerta (ej., 'slack', 'discord', 'telegram', 'email') |
title |
string | No | El título de la alerta |
text |
string | Sí | El contenido del mensaje de la alerta |
level |
string | No | Nivel de severidad: 'info', 'success', 'warning', o 'error' (por defecto: 'info') |
Alerta simple:
send_alert('slack', 'Reporte Diario', 'Todas las métricas están dentro del rango normal.', 'success')
Alerta basada en datos:
df = datasets["sales_query"]
total = df["revenue"].sum()
if total < 10000:
send_alert('discord', 'Alerta de Ingresos', f'Los ingresos diarios son ${total:,.2f}, por debajo del umbral de ,000.', 'warning')
else:
send_alert('slack', 'Actualización de Ingresos', f'Ingresos diarios: ${total:,.2f}', 'success')
Múltiples canales:
message = f'Se encontraron {len(anomalies)} anomalías en el último lote de datos.'
send_alert('slack', 'Calidad de Datos', message, 'error')
send_alert('email', 'Calidad de Datos', message, 'error')
Nota: Los canales deben estar configurados antes de usarlos. Consulta Canales para instrucciones de configuración. Al combinarlo con la Programación de Consultas, puedes automatizar la ejecución del notebook y enviar alertas de forma recurrente.
print_df: Mostrará el dataframe de pandas en una tabla html.run_query(query, db_connection_name): Ejecutará una consulta y devolverá los resultados como un dataframe de pandas.send_alert(channel, title, text, level): Enviar una notificación a un canal configurado.Available Python Packages: Pyodide Comes by default with a set of packages, including:
pandas
numpy
matplotlib
scikit-learn
statsmodels
plotly
Check all available packages in the Pyodide documentation.
seasborn) are not available by default. You can install them using micropip in your notebook. For example, to install seaborn, run:import micropip
await micropip.install(['seaborn'])


plt.show() hook.Start experimenting with live Python in your reports today—your data, your code, your insights, all in one place!