В Snowflake SQL есть функция WIDTH_BUCKET, которую можно использовать для создания гистограммы:
with hist as (
select
width_bucket(
x,
min(x) over (partition by null),
max(x) over (partition by null),
10
) as hist_bin
from mydata
)
select hist_bin, count(*) as hist_count
from hist
group by 1
order by 1
Это утомительно, но это работает.
Однако я не вижу эквивалентной функции width_bucket
в API Snowpark Python.
Есть ли аналог в Snowpark?
Или мне также нужно вручную создавать сегменты с большим уродливым выражением case
?
Вы можете получить доступ к любой встроенной функции SQL с помощью Snowflake.snowpark.functions.call_function
Из примеров документации:
>>> df = session.create_dataframe([1, 2, 3, 4], schema=["a"]) # a single column with 4 rows
>>> df.select(call_function("avg", col("a"))).show()
Чтобы получить доступ к пользовательской функции, используйте Snowflake.snowpark.functions.call_udf