DataStore включает более 20 фабричных методов для создания экземпляров из различных источников данных, включая локальные файлы, базы данных, облачные хранилища и озера данных.
Универсальный интерфейс URI
Метод uri() — рекомендуемая универсальная точка входа с автоматическим определением типа источника:
from chdb.datastore import DataStore
# Локальные файлы
ds = DataStore.uri("data.csv")
ds = DataStore.uri("/path/to/data.parquet")
# Облачные хранилища
ds = DataStore.uri("s3://bucket/data.parquet?nosign=true")
ds = DataStore.uri("https://example.com/data.csv")
# Базы данных
ds = DataStore.uri("mysql://user:pass@host:3306/db/table")
ds = DataStore.uri("postgresql://user:pass@host:5432/db/table")Справочник по синтаксису URI
| Тип источника | Формат URI | Пример |
|---|---|---|
| Локальный файл | path/to/file |
data.csv, /abs/path/data.parquet |
| S3 | s3://bucket/path |
s3://mybucket/data.parquet?nosign=true |
| GCS | gs://bucket/path |
gs://mybucket/data.csv |
| Azure | az://container/path |
az://mycontainer/data.parquet |
| HTTP/HTTPS | https://url |
https://example.com/data.csv |
| MySQL | mysql://user:pass@host:port/db/table |
mysql://root:pass@localhost:3306/mydb/users |
| PostgreSQL | postgresql://user:pass@host:port/db/table |
postgresql://postgres:pass@localhost:5432/mydb/users |
| SQLite | sqlite:///path?table=name |
sqlite:///data.db?table=users |
| ClickHouse | clickhouse://host:port/db/table |
clickhouse://localhost:9000/default/hits |
Файловые источники
from_file
Создаёт DataStore из локального или удалённого файла с автоматическим определением формата.
DataStore.from_file(path, format=None, compression=None, **kwargs)Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
path |
str | обязательно | Путь к файлу (локальный путь или URL) |
format |
str | None |
Формат файла (если указано None, определяется автоматически) |
compression |
str | None |
Тип сжатия (если указано None, определяется автоматически) |
Поддерживаемые форматы: CSV, TSV, Parquet, JSON, JSONLines, ORC, Avro, Arrow
Примеры:
from chdb.datastore import DataStore
# Автоматическое определение формата по расширению
ds = DataStore.from_file("data.csv")
ds = DataStore.from_file("data.parquet")
ds = DataStore.from_file("data.json")
# Явное указание формата
ds = DataStore.from_file("data.txt", format="CSV")
# Со сжатием
ds = DataStore.from_file("data.csv.gz", compression="gzip")Функции чтения, совместимые с Pandas
from chdb import datastore as pd
# CSV-файлы
ds = pd.read_csv("data.csv")
ds = pd.read_csv("data.csv", sep=";", header=0, nrows=1000)
# Файлы Parquet (рекомендуется для больших датасетов)
ds = pd.read_parquet("data.parquet")
ds = pd.read_parquet("data.parquet", columns=['col1', 'col2'])
# JSON-файлы
ds = pd.read_json("data.json")
ds = pd.read_json("data.jsonl", lines=True)
# Файлы Excel
ds = pd.read_excel("data.xlsx", sheet_name="Sheet1")Облачное хранилище
from_s3
Создание DataStore из Amazon S3.
DataStore.from_s3(url, access_key_id=None, secret_access_key=None, format=None, **kwargs)Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
url |
str | обязательно | URL-адрес S3 (s3://bucket/path) |
access_key_id |
str | None |
Идентификатор ключа доступа AWS |
secret_access_key |
str | None |
Секретный ключ доступа AWS |
format |
str | None |
Формат файла (определяется автоматически) |
Примеры:
from chdb.datastore import DataStore
# Анонимный доступ (общедоступный бакет)
ds = DataStore.from_s3("s3://bucket/data.parquet")
# С учетными данными
ds = DataStore.from_s3(
"s3://bucket/data.parquet",
access_key_id="AKIAIOSFODNN7EXAMPLE",
secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
)
# Использование URI с параметрами запроса
ds = DataStore.uri("s3://bucket/data.parquet?nosign=true")
ds = DataStore.uri("s3://bucket/data.parquet?access_key_id=KEY&secret_access_key=SECRET")from_gcs
Создать DataStore из Google Cloud Storage.
DataStore.from_gcs(url, credentials_path=None, **kwargs)Примеры:
ds = DataStore.from_gcs("gs://bucket/data.parquet")
ds = DataStore.from_gcs("gs://bucket/data.parquet", credentials_path="/path/to/creds.json")from_azure
Создает DataStore из Azure Blob Storage.
DataStore.from_azure(url, account_name=None, account_key=None, **kwargs)Примеры:
ds = DataStore.from_azure(
"az://container/data.parquet",
account_name="myaccount",
account_key="mykey"
)from_hdfs
Создаёт DataStore из HDFS.
DataStore.from_hdfs(url, **kwargs)Примеры:
ds = DataStore.from_hdfs("hdfs://namenode:8020/path/data.parquet")from_url
Создаёт DataStore по URL HTTP/HTTPS.
DataStore.from_url(url, format=None, **kwargs)Примеры:
ds = DataStore.from_url("https://example.com/data.csv")
ds = DataStore.from_url("https://raw.githubusercontent.com/user/repo/main/data.parquet")Базы данных
from_mysql
Создание DataStore из базы данных MySQL.
DataStore.from_mysql(host, database, table, user, password, port=3306, **kwargs)Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
host |
str | required | Хост MySQL |
database |
str | required | Имя базы данных |
table |
str | required | Имя таблицы |
user |
str | required | Имя пользователя |
password |
str | required | Пароль |
port |
int | 3306 |
Номер порта |
Примеры:
ds = DataStore.from_mysql(
host="localhost",
database="mydb",
table="users",
user="root",
password="password"
)
# Использование URI
ds = DataStore.uri("mysql://root:password@localhost:3306/mydb/users")from_postgresql
Создать DataStore из базы данных PostgreSQL.
DataStore.from_postgresql(host, database, table, user, password, port=5432, **kwargs)Примеры:
ds = DataStore.from_postgresql(
host="localhost",
database="mydb",
table="users",
user="postgres",
password="password"
)
# Использование URI
ds = DataStore.uri("postgresql://postgres:password@localhost:5432/mydb/users")from_clickhouse
Создает DataStore на основе сервера ClickHouse.
DataStore.from_clickhouse(host, database, table, user=None, password=None, port=9000, **kwargs)Примеры:
ds = DataStore.from_clickhouse(
host="localhost",
database="default",
table="hits",
user="default",
password=""
)
# Режим на уровне подключения (просмотр баз данных)
ds = DataStore.from_clickhouse(
host="analytics.company.com",
user="analyst",
password="secret"
)
ds.databases() # Список баз данных
ds.tables("production") # Список таблиц
result = ds.sql("SELECT * FROM production.users LIMIT 10")from_mongodb
Создание DataStore из MongoDB.
DataStore.from_mongodb(uri, database, collection, **kwargs)Примеры:
ds = DataStore.from_mongodb(
uri="mongodb://localhost:27017",
database="mydb",
collection="users"
)from_sqlite
Создает DataStore из базы данных SQLite.
DataStore.from_sqlite(database_path, table, **kwargs)Примеры:
ds = DataStore.from_sqlite("data.db", table="users")
# Использование URI
ds = DataStore.uri("sqlite:///data.db?table=users")Озера данных
from_iceberg
Создаёт DataStore на основе таблицы Apache Iceberg.
DataStore.from_iceberg(path, **kwargs)Примеры:
ds = DataStore.from_iceberg("/path/to/iceberg_table")
ds = DataStore.uri("iceberg://catalog/namespace/table")from_delta
Создает DataStore из таблицы Delta Lake.
DataStore.from_delta(path, **kwargs)Примеры:
ds = DataStore.from_delta("/path/to/delta_table")
ds = DataStore.uri("deltalake:///path/to/delta_table")from_hudi
Создает DataStore на основе таблицы Apache Hudi.
DataStore.from_hudi(path, **kwargs)Примеры:
ds = DataStore.from_hudi("/path/to/hudi_table")
ds = DataStore.uri("hudi:///path/to/hudi_table")Источники в памяти
from_df / from_dataframe
Создаёт DataStore из pandas DataFrame.
DataStore.from_df(df, name=None)
DataStore.from_dataframe(df, name=None) # псевдонимПримеры:
import pandas
from chdb.datastore import DataStore
pdf = pandas.DataFrame({'a': [1, 2, 3], 'b': ['x', 'y', 'z']})
ds = DataStore.from_df(pdf)Конструктор DataFrame
Создайте DataStore с помощью конструктора, аналогичного pandas.
from chdb import datastore as pd
# Из словаря
ds = pd.DataFrame({
'name': ['Alice', 'Bob'],
'age': [25, 30]
})
# Из pandas DataFrame
import pandas
pdf = pandas.DataFrame({'a': [1, 2, 3]})
ds = pd.DataFrame(pdf)Специальные источники
from_numbers
Создаёт DataStore с последовательными числами (полезно для тестирования).
DataStore.from_numbers(count, **kwargs)Примеры:
ds = DataStore.from_numbers(1000000) # 1M строк со столбцом 'number'
result = ds.filter(ds['number'] % 2 == 0).head(10) # Чётные числаfrom_random
Создаёт DataStore со случайными данными.
DataStore.from_random(rows, columns, **kwargs)Примеры:
ds = DataStore.from_random(rows=1000, columns=5)run_sql
Создает DataStore из SQL-запроса Raw SQL.
DataStore.run_sql(query)Примеры:
ds = DataStore.run_sql("""
SELECT number, number * 2 as doubled
FROM numbers(100)
WHERE number % 10 = 0
""")Сводная таблица
| Метод | Тип источника | Пример |
|---|---|---|
uri() |
Универсальный | DataStore.uri("s3://bucket/data.parquet") |
from_file() |
Локальные/удалённые файлы | DataStore.from_file("data.csv") |
read_csv() |
CSV-файлы | pd.read_csv("data.csv") |
read_parquet() |
Файлы Parquet | pd.read_parquet("data.parquet") |
from_s3() |
Amazon S3 | DataStore.from_s3("s3://bucket/path") |
from_gcs() |
Google Cloud Storage | DataStore.from_gcs("gs://bucket/path") |
from_azure() |
Azure Blob | DataStore.from_azure("az://container/path") |
from_hdfs() |
HDFS | DataStore.from_hdfs("hdfs://host/path") |
from_url() |
HTTP/HTTPS | DataStore.from_url("https://example.com/data.csv") |
from_mysql() |
MySQL | DataStore.from_mysql(host, db, table, user, pass) |
from_postgresql() |
PostgreSQL | DataStore.from_postgresql(host, db, table, user, pass) |
from_clickhouse() |
ClickHouse | DataStore.from_clickhouse(host, db, table) |
from_mongodb() |
MongoDB | DataStore.from_mongodb(uri, db, collection) |
from_sqlite() |
SQLite | DataStore.from_sqlite("data.db", table) |
from_iceberg() |
Apache Iceberg | DataStore.from_iceberg("/path/to/table") |
from_delta() |
Delta Lake | DataStore.from_delta("/path/to/table") |
from_hudi() |
Apache Hudi | DataStore.from_hudi("/path/to/table") |
from_df() |
pandas DataFrame | DataStore.from_df(pandas_df) |
DataFrame() |
словарь / DataFrame | pd.DataFrame({'a': [1, 2, 3]}) |
from_numbers() |
Последовательные числа | DataStore.from_numbers(1000000) |
from_random() |
Случайные данные | DataStore.from_random(rows=1000, columns=5) |
run_sql() |
Raw SQL | DataStore.run_sql("SELECT * FROM ...") |