DuckDB python API:查询组成
DuckDB python API: query composition
假设我将 DuckDB 与 python 一起使用,用于查询 Apache parquet 文件 test.pq
,table 包含两列 f1
和 f2
。
r1 = duckdb.query("""
SELECT f1 FROM parquet_scan('test.pq') WHERE f2 > 1
""")
现在我想在另一个查询中使用 r1
结果,例如:
duckdb.query("""SELECT * FROM r1 WHERE f1 > 10""")
然而,最后一条指令给出:RuntimeError: Catalog Error: Table with name r1 does not exist!
我是否缺少相当于 Apache Spark registerTempTable()
的 DuckDB 方法?
r1 = duckdb.query("""
SELECT f1 FROM parquet_scan('test.pq') WHERE f2 > 1
""")
不会创建一个名为 r1 的 table,但实际上会创建一个关系,它只不过是一个执行计划。因此,如果您对其调用执行,实际上会执行扫描镶木地板文件的查询
result = r1.execute()
如果您想将其作为table查询,基本上有两种选择。
- 您从您的关系创建视图
r1.create_view('table_name')
- 您更改 SQL 查询以创建 duckdb table
conn = duckdb.connect()
conn.execute("create table t as SELECT f1 FROM parquet_scan('test.pq') where f2 > 1 ")
请注意,在 1 中,您实际上会将 parquet 数据加载到 Duck table,而在 2 中,您将不断读取 parquet 数据本身。
最后,如果你只是想堆叠过滤器,那么你可以这样做:
r2 = r1.filter("f1>10")
在 Duckdb 的网站上有更多关于 Python 关系 Api 的信息,更具体地说:
https://duckdb.org/docs/api/python
https://github.com/duckdb/duckdb/blob/master/examples/python/duckdb-python.py
希望这对您有所帮助! ;-)
假设我将 DuckDB 与 python 一起使用,用于查询 Apache parquet 文件 test.pq
,table 包含两列 f1
和 f2
。
r1 = duckdb.query("""
SELECT f1 FROM parquet_scan('test.pq') WHERE f2 > 1
""")
现在我想在另一个查询中使用 r1
结果,例如:
duckdb.query("""SELECT * FROM r1 WHERE f1 > 10""")
然而,最后一条指令给出:RuntimeError: Catalog Error: Table with name r1 does not exist!
我是否缺少相当于 Apache Spark registerTempTable()
的 DuckDB 方法?
r1 = duckdb.query("""
SELECT f1 FROM parquet_scan('test.pq') WHERE f2 > 1
""")
不会创建一个名为 r1 的 table,但实际上会创建一个关系,它只不过是一个执行计划。因此,如果您对其调用执行,实际上会执行扫描镶木地板文件的查询
result = r1.execute()
如果您想将其作为table查询,基本上有两种选择。
- 您从您的关系创建视图
r1.create_view('table_name')
- 您更改 SQL 查询以创建 duckdb table
conn = duckdb.connect()
conn.execute("create table t as SELECT f1 FROM parquet_scan('test.pq') where f2 > 1 ")
请注意,在 1 中,您实际上会将 parquet 数据加载到 Duck table,而在 2 中,您将不断读取 parquet 数据本身。
最后,如果你只是想堆叠过滤器,那么你可以这样做:
r2 = r1.filter("f1>10")
在 Duckdb 的网站上有更多关于 Python 关系 Api 的信息,更具体地说: https://duckdb.org/docs/api/python
https://github.com/duckdb/duckdb/blob/master/examples/python/duckdb-python.py
希望这对您有所帮助! ;-)