Diga que eu tenho
import duckdb
rel = duckdb.sql('select * from values (1, 4), (1, 5), (2, 6) df(a, b)')
rel
Out[3]:
┌───────┬───────┐
│ a │ b │
│ int32 │ int32 │
├───────┼───────┤
│ 1 │ 4 │
│ 1 │ 5 │
│ 2 │ 6 │
└───────┴───────┘
Posso agrupar por a e encontrar a média de 'b' fazendo:
rel.aggregate(
[duckdb.FunctionExpression('mean', duckdb.ColumnExpression('b'))],
group_expr='a',
)
┌─────────┐
│ mean(b) │
│ double │
├─────────┤
│ 4.5 │
│ 6.0 │
└─────────┘
que funciona maravilhosamente
Existe uma maneira semelhante de criar uma agregação "n_unique"? Estou procurando algo como
rel.aggregate(
[duckdb.FunctionExpression('count_distinct', duckdb.ColumnExpression('b'))],
group_expr='a',
)
mas isso não existe. Tem algo que exista?
atualizado . Não consegui encontrar uma maneira adequada de fazer isso
count distinct
, mas você pode usar uma combinação de funçõesarray_agg()
earray_unique()
:antigo . você pode pré-selecionar
a
colunas distintasb
?