我有一个类似于客户 ID 和商品购买日期的数据表,如下所示。作为过滤器,我希望返回客户 ID,前提是给定的客户 ID 在过去 30 个滚动天内至少进行了 1 次购买。
这是可以用一个简单的WHERE子句来完成的事情吗?就我的目的而言,该数据表有许多记录,其中一个客户 ID 可能有数百笔交易
Customer ID Item Date Purchased
233 2021-05-27
111 2021-05-27
111 2021-05-21
23 2021-05-12
412 2021-03-11
111 2021-03-03
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Customer ID
233
111
23
Run Code Online (Sandbox Code Playgroud)
最初考虑使用 CTE 来初步过滤掉过去 30 天内没有至少购买过 1 件商品的所有用户。尝试了以下两个不同的 where 语句,但都无法返回错误的日期时间范围。
SELECT *
FROM data d
WHERE 30 <= datediff(days, d.ITEM_PURCHASE_DATE, current_date) X
WHERE t.DATE_CREATED <= current_date + interval '30 days' X
Run Code Online (Sandbox Code Playgroud) 我希望从Postgres转向SnowFlake,因为我的某些功能需要运行时分析,而运行时分析在Snowflake中更快。
我只能获得用于Snowflake的Python连接器API,这将要求我创建原始查询而不是Djago ORM查询。
无论如何,我们可以使用Django连接到Snowflake并在Snowflake上执行相同的Django ORM查询。
我看到了这个老帖子 如何在Django中查询此(雪花)数据模式
但是找不到如何与Snowflake建立django连接。
我有一个 CSV 文件,其示例如下所示: CSV 文件的图像
Snowpipe 无法加载此 CSV 文件,并出现以下错误:
文件 (5) 中的列数与相应表 (3) 的列数不匹配,使用文件格式选项 error_on_column_count_mismatch=false 忽略此错误
有人可以建议我 csv 文件格式定义以适应加载而不会失败吗?
当我尝试减去时间戳并执行窗口函数(lead、lag和partition by)时,出现此错误:
函数“-”的参数类型无效:(TIMESTAMP_NTZ(9)、TIMESTAMP_NTZ(9))
尝试过date_diff,但这不能与窗口函数一起使用
SELECT
user_id,
event,
received_at,
received_at - LAG( received_at,1) OVER (PARTITION BY user_id ORDER BY received_at) AS last_event
FROM
segment_javascript.help_center_opened
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 to_sql 方法将我的 DataFrame 写入 Snowflake。
sf_conn = snowflake.connector.connect(
account=*****,
user=*****,
password=*****,
role=*****,
warehouse=*****,
database=*****
)
sf_cur = sf_conn.cursor()
df = pd.DataFrame([('Mark', 10), ('Luke', 20)], columns=['name', 'balance'])
df.to_sql('TEST3',con=sf_cur, schema='public', index=False)
Run Code Online (Sandbox Code Playgroud)
但还没有运气。
File "/home/karma/.local/lib/python3.6/site-packages/pandas/io/sql.py", line 1584, in execute
cur = self.con.cursor()
AttributeError: 'SnowflakeCursor' object has no attribute 'cursor'
Run Code Online (Sandbox Code Playgroud)
甚至尝试给予con=sf_conn但收到以下错误:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)
我可以使用 sqlAlchemy create_engine lib 完成相同的工作,但想使用专门的雪花连接。
import numpy
import cv2
cap = cv2.VideoCapture(0)
while(True):
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(20) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
这是我的代码,我得到这个错误 1.Module 'cv2' 没有 'VideoCapture' 成员 2.Module 'cv2' 没有 'imshow' 成员 3.Module 'cv2' 没有 'waitKey' 成员 4.Module 'cv2' 有没有“destroyAllWindows”成员
阅读完文档后,我发现很难理解这两件事如何结合在一起或者它们是否是同一件事?
Spectrum 是底层技术名称,外部表位于其之上吗?您可以在不使用 Redshift Spectrum 的情况下使用外部表吗?如果不同的话,有什么区别呢?
我是Scala的新手,请多多包涵!我正在做一些Scala练习,其中之一是创建一个从1到20的奇数列表。这很简单,但是我filter对范围内方法的返回类型有些困惑。
我有以下块:
val lst2 = (1 to 20).filter(_ % 2 != 0)
println(lst2)
Run Code Online (Sandbox Code Playgroud)
输出为:
向量(1、3、5、7、9、11、13、15、17、19)
然而,当我明确设置的类型lst2,以Vector[Int]类似如下:
val lst2: Vector[Int] = (1 to 20).filter(_ % 2 != 0)
println(lst2)
Run Code Online (Sandbox Code Playgroud)
我得到这个:
16:错误:类型不匹配;
找到:scala.collection.immutable.IndexedSeq [Int]
必需:Vector [Int] val lst2:Vector [Int] =(1至20).filter(_%2!= 0)^找到一个错误
那么,这里发生了什么?该println方法只是没有给我正确的类型?如何获取filter方法以返回Vector?
在Snowflake中运行时,以下命令:
CREATE MATERIALIZED VIEW MV_CUSTOMER_PREFERENCE as select * from V_CUSTOMER_PREFERENCE;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
SQL编译错误:位置{1}处的错误行{0}为错误的实例化视图定义。视图定义中引用了多个表
V_CUSTOMER_PREFERENCE是一个现有的并且起作用的视图(可以单独查询),该视图连接了来自不同表的信息。当我放置原始查询而不是视图时,会遇到相同的错误,这只是一个漫长而复杂的SQL查询。
视图中的查询可能有什么问题?我无法从错误说明中了解它,也没有在https://docs.snowflake.net/manuals/user-guide/views-materialized.html中找到相关限制
如何将一列的数据类型从布尔值更改varchar(50)为雪花中的值?
OTCONTROLLABLE BOOLEAN 在下面的示例中 OTCONTROLLABLE varchar(50)
create or replace TABLE ORIGINATIONUNRECOGNIZEDREVENUE_OTCN030 (
YEAR VARCHAR(50),
MONTH VARCHAR(50),
OTCONTROLLABLE BOOLEAN);
Run Code Online (Sandbox Code Playgroud)