Skip to main content
En esta guía, pondremos en marcha la variante de Python de chDB. Comenzaremos consultando un archivo JSON en S3, luego crearemos una tabla en chDB a partir de ese archivo JSON y haremos algunas consultas sobre los datos. También veremos cómo hacer que las consultas devuelvan datos en distintos formatos, incluidos Apache Arrow y Pandas, y, por último, aprenderemos a consultar DataFrames de Pandas.

Preparación

Primero, vamos a crear un entorno virtual:
Y ahora instalaremos chDB. Asegúrate de tener la versión 2.0.3 o posterior:
Ahora vamos a instalar ipython:
Vamos a usar ipython para ejecutar los comandos del resto de la guía, que puedes abrir ejecutando:
En esta guía también usaremos Pandas y Apache Arrow, así que instalemos esas bibliotecas también:

Consulta de un archivo JSON en S3

Veamos ahora cómo consultar un archivo JSON almacenado en un bucket de S3. El conjunto de datos de dislikes de YouTube contiene más de 4 mil millones de filas sobre dislikes en videos de YouTube hasta 2021. Vamos a trabajar con uno de los archivos JSON de ese conjunto de datos. Importa chdb:
Podemos ejecutar la siguiente consulta para describir la estructura de uno de los archivos JSON:
También podemos contar el número de filas de ese archivo:
Este archivo contiene poco más de 300.000 registros. chdb todavía no admite parámetros de consulta, pero podemos extraer la ruta y pasarla mediante una f-string.
Esto está bien si se hace con variables definidas en tu programa, pero no lo hagas con datos proporcionados por el usuario; de lo contrario, tu consulta queda expuesta a una inyección SQL.

Configuración del formato de salida

El formato de salida predeterminado es CSV, pero podemos cambiarlo mediante el parámetro output_format. chDB admite los formatos de datos de ClickHouse, así como algunos propios, incluido DataFrame, que devuelve un DataFrame de Pandas:
O bien, si queremos recuperar una tabla Arrow:

Creación de una tabla a partir de un archivo JSON

A continuación, veamos cómo crear una tabla en chDB. Para ello, necesitamos usar una API diferente, así que primero importémosla:
A continuación, inicializaremos una sesión. Si queremos que la sesión se guarde en disco, tenemos que indicar un nombre de directorio. Si lo dejamos en blanco, la sesión será temporal: chDB guarda sus datos en un directorio temporal en disco y los elimina cuando se cierra la sesión, por lo que los datos no persisten.
chDB ejecuta un único motor embebido por proceso, por lo que el directorio de la base de datos (su ruta) está sujeto a algunas reglas:
  • Un proceso por ruta: un directorio de datos de chDB solo puede abrirlo un proceso del sistema operativo a la vez. Un segundo proceso que abra la misma ruta fallará hasta que se cierre el primero.
  • Una ruta por proceso: mientras haya una sesión o conexión abierta, no se podrá abrir otra para una ruta diferente; primero cierre las que estén abiertas para evitar el error. Pueden coexistir varias sesiones o conexiones en la misma ruta.
  • Concurrencia: las sesiones o conexiones en la misma ruta pueden ejecutar consultas simultáneamente.
  • Las sesiones sin ruta se comparten: sin una ruta, las sesiones usan la base de datos :memory: compartida por todo el proceso (por lo que las sesiones en blanco pueden ver las tablas de las demás), y su directorio temporal solo se elimina cuando se cierra la última.
A continuación, crearemos una base de datos:
Ahora podemos crear una tabla dislikes a partir del esquema del archivo JSON, usando la técnica CREATE...EMPTY AS. Usaremos la configuración schema_inference_make_columns_nullable para evitar que todos los tipos de columna se conviertan en Nullable.
A continuación, podemos usar la cláusula DESCRIBE para inspeccionar el esquema:
A continuación, vamos a poblar esa tabla:
También podríamos hacer ambos pasos de una sola vez con la técnica CREATE...AS. Vamos a crear otra tabla con esa técnica:

Consultar una tabla

Por último, consultemos la tabla:
Supongamos que luego añadimos una columna adicional al DataFrame para calcular la proporción entre «me gusta» y «no me gusta». Podríamos escribir el siguiente código:

Consultar un DataFrame de Pandas

A continuación, podemos consultar ese DataFrame con chDB:
También puede obtener más información sobre cómo consultar DataFrames de Pandas en la guía para desarrolladores sobre consultas en DataFrames de Pandas.

Próximos pasos

Esperamos que esta guía te haya ofrecido una buena visión general de chDB. Para obtener más información sobre cómo usarlo, consulta las siguientes guías para desarrolladores:
Última modificación el 26 de agosto de 2026