Both query methods return a Polars LazyFrame; call .collect() only when an eager DataFrame is required.

Use query_general() for every kind of dataset, especially general datasets without canonical time and asset fields:

stocks = lake.query.query_general("stock_basic", source="tushare", fields=["ts_code", "name"])

Use query() only for by_daily and by_asset datasets. It can filter the canonical (time, asset_id) key and select output fields:

close = lake.query.query(
    "daily",
    source="tushare",
    start="2026-01-01",
    end="2026-01-31",
    assets=["000001.SZ"],
    fields=["time", "asset_id", "close"],
)

Omit fields to return all stored fields. Calling query() on a general dataset raises an error; use query_general() instead.