Pyspark 日期间隔和日期之间?
Pyspark date intervals and between dates?
在Snowflake/SQL中我们可以做:
SELECT * FROM myTbl
WHERE date_col
BETWEEN
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '7 DAY'
AND
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '1 DAY'
数据帧有 pyspark 翻译吗?
我想如果是这样的话
myDf.filter(
col(date_col) >= to_utc_timestamp(...)
)
但是BETWEEN
和interval
怎么办呢?
您可以在 SQL 表达式中使用 INTERVAL
,如下所示:
df1 = df.filter(
F.col("date_col").between(
F.expr("current_timestamp - interval 7 days"),
F.expr("current_timestamp - interval 1 days"),
)
)
然而,如果您只使用天数进行过滤,您可以简单地使用 date_add
(或 date_sub
)函数:
from pyspark.sql import functions as F
df1 = df.filter(
F.col("date_col").between(
F.date_add(F.current_date(), -7),
F.date_add(F.current_date(), -1)
)
)
在Snowflake/SQL中我们可以做:
SELECT * FROM myTbl
WHERE date_col
BETWEEN
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '7 DAY'
AND
CONVERT_TIMEZONE('UTC','America/Los_Angeles', some_date_string_col)::DATE - INTERVAL '1 DAY'
数据帧有 pyspark 翻译吗?
我想如果是这样的话
myDf.filter(
col(date_col) >= to_utc_timestamp(...)
)
但是BETWEEN
和interval
怎么办呢?
您可以在 SQL 表达式中使用 INTERVAL
,如下所示:
df1 = df.filter(
F.col("date_col").between(
F.expr("current_timestamp - interval 7 days"),
F.expr("current_timestamp - interval 1 days"),
)
)
然而,如果您只使用天数进行过滤,您可以简单地使用 date_add
(或 date_sub
)函数:
from pyspark.sql import functions as F
df1 = df.filter(
F.col("date_col").between(
F.date_add(F.current_date(), -7),
F.date_add(F.current_date(), -1)
)
)