본문으로 바로가기
본문으로 바로가기

DataStore 팩토리 메서드

DataStore에는 로컬 파일, 데이터베이스, Cloud 스토리지, 데이터 레이크 등 다양한 데이터 소스에서 인스턴스를 생성할 수 있는 20개 이상의 팩토리 메서드가 있습니다.

Universal URI Interface

uri() 메서드는 소스 유형을 자동으로 감지하는 권장 범용 진입점입니다.

from chdb.datastore import DataStore

# Local files
ds = DataStore.uri("data.csv")
ds = DataStore.uri("/path/to/data.parquet")

# Cloud storage
ds = DataStore.uri("s3://bucket/data.parquet?nosign=true")
ds = DataStore.uri("https://example.com/data.csv")

# Databases
ds = DataStore.uri("mysql://user:pass@host:3306/db/table")
ds = DataStore.uri("postgresql://user:pass@host:5432/db/table")

URI 구문 참조

소스 유형URI 형식예시
로컬 파일path/to/filedata.csv, /abs/path/data.parquet
S3s3://bucket/paths3://mybucket/data.parquet?nosign=true
GCSgs://bucket/pathgs://mybucket/data.csv
Azureaz://container/pathaz://mycontainer/data.parquet
HTTP/HTTPShttps://urlhttps://example.com/data.csv
MySQLmysql://user:pass@host:port/db/tablemysql://root:pass@localhost:3306/mydb/users
PostgreSQLpostgresql://user:pass@host:port/db/tablepostgresql://postgres:pass@localhost:5432/mydb/users
SQLitesqlite:///path?table=namesqlite:///data.db?table=users
ClickHouseclickhouse://host:port/db/tableclickhouse://localhost:9000/default/hits

파일 소스

from_file

자동 형식 감지를 통해 로컬 또는 원격 파일에서 DataStore를 생성합니다.

DataStore.from_file(path, format=None, compression=None, **kwargs)

매개변수:

매개변수타입기본값설명
pathstr필수파일 경로(로컬 또는 URL)
formatstrNone파일 형식(None이면 자동 감지)
compressionstrNone압축 형식(None이면 자동 감지)

지원 형식: CSV, TSV, Parquet, JSON, JSONLines, ORC, Avro, Arrow

예제:

from chdb.datastore import DataStore

# Auto-detect format from extension
ds = DataStore.from_file("data.csv")
ds = DataStore.from_file("data.parquet")
ds = DataStore.from_file("data.json")

# Explicit format
ds = DataStore.from_file("data.txt", format="CSV")

# With compression
ds = DataStore.from_file("data.csv.gz", compression="gzip")

Pandas와 호환되는 읽기 함수

from chdb import datastore as pd

# CSV files
ds = pd.read_csv("data.csv")
ds = pd.read_csv("data.csv", sep=";", header=0, nrows=1000)

# Parquet files (recommended for large datasets)
ds = pd.read_parquet("data.parquet")
ds = pd.read_parquet("data.parquet", columns=['col1', 'col2'])

# JSON files
ds = pd.read_json("data.json")
ds = pd.read_json("data.jsonl", lines=True)

# Excel files
ds = pd.read_excel("data.xlsx", sheet_name="Sheet1")

Cloud 스토리지

from_s3

Amazon S3 기반으로 DataStore를 생성합니다.

DataStore.from_s3(url, access_key_id=None, secret_access_key=None, format=None, **kwargs)

매개변수:

매개변수유형기본값설명
urlstrrequiredS3 URL (s3://버킷/path)
access_key_idstrNoneAWS 액세스 키 ID
secret_access_keystrNoneAWS 비밀 액세스 키
formatstrNone파일 형식(자동 감지됨)

예제:

from chdb.datastore import DataStore

# Anonymous access (public bucket)
ds = DataStore.from_s3("s3://bucket/data.parquet")

# With credentials
ds = DataStore.from_s3(
    "s3://bucket/data.parquet",
    access_key_id="AKIAIOSFODNN7EXAMPLE",
    secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
)

# Using URI with query parameters
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

Google Cloud Storage에서 DataStore를 생성합니다.

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

Azure Blob Storage로부터 DataStore를 생성합니다.

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

HDFS를 기반으로 DataStore를 생성합니다.

DataStore.from_hdfs(url, **kwargs)

예제:

ds = DataStore.from_hdfs("hdfs://namenode:8020/path/data.parquet")

from_url

HTTP/HTTPS URL에서 DataStore를 생성합니다.

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

MySQL 데이터베이스에서 DataStore를 생성합니다.

DataStore.from_mysql(host, database, table, user, password, port=3306, **kwargs)

매개변수:

매개변수타입기본값설명
hoststr필수MySQL 호스트
databasestr필수데이터베이스 이름
tablestr필수테이블 이름
userstr필수사용자 이름
passwordstr필수비밀번호
portint3306포트 번호

예제:

ds = DataStore.from_mysql(
    host="localhost",
    database="mydb",
    table="users",
    user="root",
    password="password"
)

# Using URI
ds = DataStore.uri("mysql://root:password@localhost:3306/mydb/users")

from_postgresql

PostgreSQL 데이터베이스로부터 DataStore를 생성합니다.

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"
)

# Using URI
ds = DataStore.uri("postgresql://postgres:password@localhost:5432/mydb/users")

from_clickhouse

ClickHouse 서버에서 DataStore를 생성합니다.

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=""
)

# Connection-level mode (explore databases)
ds = DataStore.from_clickhouse(
    host="analytics.company.com",
    user="analyst",
    password="secret"
)
ds.databases()                  # List databases
ds.tables("production")         # List tables
result = ds.sql("SELECT * FROM production.users LIMIT 10")

from_mongodb

MongoDB로부터 DataStore를 생성합니다.

DataStore.from_mongodb(uri, database, collection, **kwargs)

예제:

ds = DataStore.from_mongodb(
    uri="mongodb://localhost:27017",
    database="mydb",
    collection="users"
)

from_sqlite

SQLite 데이터베이스에서 DataStore를 생성합니다.

DataStore.from_sqlite(database_path, table, **kwargs)

예시:

ds = DataStore.from_sqlite("data.db", table="users")

# Using URI
ds = DataStore.uri("sqlite:///data.db?table=users")

데이터 레이크

from_iceberg

Apache Iceberg 테이블을 기반으로 DataStore를 생성합니다.

DataStore.from_iceberg(path, **kwargs)

예시:

ds = DataStore.from_iceberg("/path/to/iceberg_table")
ds = DataStore.uri("iceberg://catalog/namespace/table")

from_delta

Delta Lake 테이블에서 DataStore를 생성합니다.

DataStore.from_delta(path, **kwargs)

예제:

ds = DataStore.from_delta("/path/to/delta_table")
ds = DataStore.uri("deltalake:///path/to/delta_table")

from_hudi

Apache Hudi 테이블을 기반으로 DataStore를 생성합니다.

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

pandas DataFrame으로부터 DataStore를 생성합니다.

DataStore.from_df(df, name=None)
DataStore.from_dataframe(df, name=None)  # alias

예시:

import pandas
from chdb.datastore import DataStore

pdf = pandas.DataFrame({'a': [1, 2, 3], 'b': ['x', 'y', 'z']})
ds = DataStore.from_df(pdf)

DataFrame 생성자

pandas 스타일의 생성자를 사용하여 DataStore 인스턴스를 생성합니다.

from chdb import datastore as pd

# From dictionary
ds = pd.DataFrame({
    'name': ['Alice', 'Bob'],
    'age': [25, 30]
})

# From 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 rows with 'number' column
result = ds.filter(ds['number'] % 2 == 0).head(10)  # Even numbers

from_random

무작위 데이터를 사용하여 DataStore를 생성합니다.

DataStore.from_random(rows, columns, **kwargs)

예제:

ds = DataStore.from_random(rows=1000, columns=5)

run_sql

원시 SQL 쿼리를 사용해 DataStore를 생성합니다.

DataStore.run_sql(query)

예시:

ds = DataStore.run_sql("""
    SELECT number, number * 2 as doubled
    FROM numbers(100)
    WHERE number % 10 = 0
""")

요약 표

Method소스 유형예시
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 S3DataStore.from_s3("s3://bucket/path")
from_gcs()Google Cloud StorageDataStore.from_gcs("gs://bucket/path")
from_azure()Azure BlobDataStore.from_azure("az://container/path")
from_hdfs()HDFSDataStore.from_hdfs("hdfs://host/path")
from_url()HTTP/HTTPSDataStore.from_url("https://example.com/data.csv")
from_mysql()MySQLDataStore.from_mysql(host, db, table, user, pass)
from_postgresql()PostgreSQLDataStore.from_postgresql(host, db, table, user, pass)
from_clickhouse()ClickHouseDataStore.from_clickhouse(host, db, table)
from_mongodb()MongoDBDataStore.from_mongodb(uri, db, collection)
from_sqlite()SQLiteDataStore.from_sqlite("data.db", table)
from_iceberg()Apache IcebergDataStore.from_iceberg("/path/to/table")
from_delta()Delta LakeDataStore.from_delta("/path/to/table")
from_hudi()Apache HudiDataStore.from_hudi("/path/to/table")
from_df()pandas DataFrameDataStore.from_df(pandas_df)
DataFrame()딕셔너리/DataFramepd.DataFrame({'a': [1, 2, 3]})
from_numbers()연속된 숫자DataStore.from_numbers(1000000)
from_random()무작위 데이터DataStore.from_random(rows=1000, columns=5)
run_sql()원시 SQLDataStore.run_sql("SELECT * FROM ...")