Агрегация «n_unique» с использованием реляционного API DuckDB, который считает нулиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Агрегация «n_unique» с использованием реляционного API DuckDB, который считает нули

Сообщение Anonymous »

Аналогично агрегации «n_unique» с использованием реляционного API DuckDB
Но мне нужно посчитать нулевые значения
Скажем, да

Код: Выделить всё

import duckdb

rel = duckdb.sql('select * from values (1, 4), (2, null), (null, null) df(a, b)')
rel

Код: Выделить всё

Out[3]:
┌───────┬───────┐
│   a   │   b   │
│ int32 │ int32 │
├───────┼───────┤
│     1 │     4 │
│     2 │  NULL │
│  NULL │  NULL │
└───────┴───────┘
Я хотел бы создать Duckdb.Expression, который я могу использовать для подсчета количества уникальных значений, включая нули
Решение предложено в связанном вопросе:

Код: Выделить всё

def n_unique(column_name: str) -> duckdb.Expression:
return duckdb.FunctionExpression(
'array_unique',
duckdb.FunctionExpression(
'array_agg',
duckdb.ColumnExpression(column_name)
)
)
здесь не совсем правильно, поскольку он пропускает нули:

Код: Выделить всё

In [39]: rel.aggregate([n_unique('a'), n_unique('b')])
Out[39]:
┌────────────────────────────┬────────────────────────────┐
│ array_unique(array_agg(a)) │ array_unique(array_agg(b)) │
│           uint64           │           uint64           │
├────────────────────────────┼────────────────────────────┤
│                          2 │                          1 │
└────────────────────────────┴────────────────────────────┘
Мой ожидаемый результат:

Код: Выделить всё

In [39]: rel.aggregate([n_unique('a'), n_unique('b')])
Out[39]:
┌────────────────────────────┬────────────────────────────┐
│ array_unique(array_agg(a)) │ array_unique(array_agg(b)) │
│           uint64           │           uint64           │
├────────────────────────────┼────────────────────────────┤
│                          3 │                          2 │
└────────────────────────────┴────────────────────────────┘
Как мне этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/793 ... unts-nulls
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Агрегация «n_unique» с использованием реляционного API DuckDB, который считает нули
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Агрегация «n_unique» с использованием реляционного API DuckDB
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Агрегация «n_unique» с использованием реляционного API DuckDB
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Агрегация «n_unique» с использованием реляционного API DuckDB
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Агрегация «n_unique» с использованием реляционного API DuckDB
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»