DuckDbTools enable an Assistant to run SQL and analyze data using DuckDb.

Prerequisites

The following examples require DuckDB installed. To install DuckDB:

pip install duckdb --upgrade

For more installation options, please refer to DuckDB documentation.

Example

The following assistant will analyze the movies file using SQL and return the result.

cookbook/tools/duckdb_tools.py
from phi.assistant import Assistant
from phi.tools.duckdb import DuckDbTools

assistant = Assistant(
    tools=[DuckDbTools()],
    show_tool_calls=True,
    system_prompt="Use this file for Movies data: https://phidata-public.s3.amazonaws.com/demo_data/IMDB-Movie-Data.csv",
)
assistant.print_response("What is the average rating of movies?", markdown=True, stream=False)

Toolkit Params

db_path
str

Specifies the path to the database file.

connection
DuckDBPyConnection

Provides an existing DuckDB connection object.

init_commands
List

A list of initial SQL commands to run on database connection.

read_only
bool
default: "False"

Configures the database connection to be read-only.

config
dict

Configuration options for the database connection.

run_queries
bool
default: "True"

Determines whether to run SQL queries during the operation.

inspect_queries
bool
default: "False"

Enables inspection of SQL queries without executing them.

create_tables
bool
default: "True"

Allows creation of tables in the database during the operation.

summarize_tables
bool
default: "True"

Enables summarization of table data during the operation.

export_tables
bool
default: "False"

Allows exporting tables to external formats during the operation.

Toolkit Functions

show_tables

Function to show tables in the database

describe_table

Function to describe a table

inspect_query

Function to inspect a query and return the query plan. Always inspect your query before running them.

run_query

Function that runs a query and returns the result.

summarize_table

Function to compute a number of aggregates over a table. The function launches a query that computes a number of aggregates over all columns, including min, max, avg, std and approx_unique.

get_table_name_from_path

Get the table name from a path

create_table_from_path

Creates a table from a path

export_table_to_path

Save a table in a desired format (default: parquet). If the path is provided, the table will be saved under that path. Eg: If path is /tmp, the table will be saved as /tmp/table.parquet. Otherwise it will be saved in the current directory

load_local_path_to_table

Load a local file into duckdb

load_local_csv_to_table

Load a local CSV file into duckdb

load_s3_path_to_table

Load a file from S3 into duckdb

load_s3_csv_to_table

Load a CSV file from S3 into duckdb

create_fts_index

Create a full text search index on a table

full_text_search

Full text Search in a table column for a specific text/keyword