Случай использования реляционного API DuckDBPython

Программы на Python
Ответить
Anonymous
 Случай использования реляционного API DuckDB

Сообщение Anonymous »

Скажем, у меня есть

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

data = {'id': [1, 1, 1, 2, 2, 2],
'd': [1, 2, 3, 1, 2, 3],
'sales': [1, 4, 2, 3, 1, 2]}
Моя конечная цель на данный момент — научиться переводить

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

import duckdb
import polars as pl
df = pl.DataFrame(data)
duckdb.sql("""
select *, case when count(sales) over w then sum(sales) over w else null end as rolling_sales
from df
window w as (partition by id order by d rows between 1 preceding and current row)
""")
Мне удалось:

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

rel = duckdb.table("df")
rel.sum(
"sales",
projected_columns="*",
window_spec="over (partition by id order by d rows between 1 preceding and current row) as rolling_sales",
)
что, на мой взгляд, гораздо более читабельно, чем огромная строка SQL
Но как мне получить случай, когда then разделяется там? Я просмотрел https://duckdb.org/docs/api/python/relational_api.html, и там нет упоминания о «случайе»

Подробнее здесь: https://stackoverflow.com/questions/791 ... tional-api
Ответить

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

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

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

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

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