DuckDB Python Relational API-Äquivalent von „select sum(a) filter (wobei b>1)“.Python

Python-Programme
Guest
 DuckDB Python Relational API-Äquivalent von „select sum(a) filter (wobei b>1)“.

Post by Guest »

Wenn ja

Code: Select all

rel = duckdb.sql('select * from values (1, 4), (1, 2), (2, 3), (2, 4) df(a, b)')
Ich würde gerne das Äquivalent von
machen

Code: Select all

In [9]: duckdb.sql('select sum(a) filter (where b>1) from rel')
Out[9]:
┌───────────────────────────────┐
│ sum(a) FILTER (WHERE (b > 1)) │
│            int128             │
├───────────────────────────────┤
│                             6 │
└───────────────────────────────┘
aber mit der Python Relational API
Ich habe es versucht

Code: Select all

rel.select(duckdb.FunctionExpression('sum', duckdb.FunctionExpression('filter', duckdb.ColumnExpression('a'), duckdb.ColumnExpression('b')>1)))
aber get

Code: Select all

---------------------------------------------------------------------------
BinderException                           Traceback (most recent call last)
Cell In[10], line 1
----> 1 rel.select(duckdb.FunctionExpression('sum', duckdb.FunctionExpression('filter', duckdb.ColumnExpression('a'), duckdb.ColumnExpression('b')>1)))

BinderException: Binder Error: No function matches the given name and argument types 'filter(INTEGER, BOOLEAN)'. You might need to add explicit type casts.
Candidate functions:
filter(ANY[], LAMBDA) -> ANY[]
Wie soll es geschrieben werden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post