标签: snowflake-cloud-data-platform

如何删除Snowflake数据库表中的重复记录

如何从雪花表中删除重复记录?

ID Name
1  Apple
1  Apple
2  Apple
3  Orange
3  Orange
Run Code Online (Sandbox Code Playgroud)

结果应该是:

ID Name
1  Apple
2  Apple
3  Orange
Run Code Online (Sandbox Code Playgroud)

snowflake-cloud-data-platform

17
推荐指数
5
解决办法
4万
查看次数

将 Snowflake-connector-python 与 Python 3.x 结合使用时出现问题

我花了半天时间试图自己解决这个问题,但现在我已经没有想法和谷歌搜索请求了。所以基本上我想要的是使用 package.json 连接到我们的 Snowflake 数据库snowflake-connector-python。我能够很好地安装该软件包(以及自动安装的所有相关软件包),我当前的pip3 list结果是:

Package                    Version
-------------------------- ---------
asn1crypto                 1.3.0
azure-common               1.1.25
azure-core                 1.6.0
azure-storage-blob         12.3.2
boto3                      1.13.26
botocore                   1.16.26
certifi                    2020.6.20
cffi                       1.14.0
chardet                    3.0.4
cryptography               2.9.2
docutils                   0.15.2
gitdb                      4.0.5
GitPython                  3.1.3
idna                       2.9
isodate                    0.6.0
jmespath                   0.10.0
msrest                     0.6.17
oauthlib                   3.1.0
oscrypto                   1.2.0
pip                        20.1.1
pyasn1                     0.2.3
pyasn1-modules             0.0.9
pycparser                  2.20
pycryptodomex              3.9.8
PyJWT                      1.7.1
pyOpenSSL                  19.1.0
python-dateutil            2.8.1
pytz                       2020.1
requests                   2.23.0
requests-oauthlib          1.3.0
s3transfer                 0.3.3
setuptools                 47.3.1
six                        1.15.0 …
Run Code Online (Sandbox Code Playgroud)

python attributeerror snowflake-cloud-data-platform

13
推荐指数
3
解决办法
3万
查看次数

雪花中 LATERAL FLATTEN(...) 和 TABLE(FLATTEN(...)) 之间的区别

LATERAL FLATTEN(...)Snowflake 中和 的使用有什么区别TABLE(FLATTEN(...))FLATTEN我检查了,LATERAL和的文档,TABLE无法明确以下查询之间的功能差异。

select
    id as account_id,
    account_regions.value::string as region
from
    salesforce.accounts,
    lateral flatten(split(salesforce.accounts.regions, ', ')) account_regions
Run Code Online (Sandbox Code Playgroud)
select
    id as account_id,
    account_regions.value::string as region
from
    salesforce.accounts,
    table(flatten(split(salesforce.accounts.regions, ', '))) account_regions
Run Code Online (Sandbox Code Playgroud)

flatten snowflake-cloud-data-platform lateral-join

13
推荐指数
1
解决办法
8761
查看次数

由于未选择活动仓库,对 Snowflake 数据库的查询不起作用

我能够通过 R 成功连接到 Snowflake 数据库,但在获取数据时遇到问题,因为没有选择活动仓库。以下是错误消息:

当前会话中未选择活动仓库。使用“使用仓库”命令选择活动仓库。

这是我正在使用的代码。

  con <- DBI::dbConnect(
    odbc::odbc(), 
    UID    = user, 
    PWD    = pass, 
    Server = host,
    Warehouse = 'YOUR_WAREHOUSE_NAME',
    Driver = "SnowflakeDSIIDriver",
    Role = role,
    Database = database,
    Autthenticator = "external browser"
  )

dbGetQuery(con, "SELECT * FROM MY_TABLE LIMIT 100")
Run Code Online (Sandbox Code Playgroud)

我已将我的连接和查询基于RStudio 社区上的该线程,但我没有任何运气。我还尝试在查询中使用“使用仓库 MY_WAREHOUSE”命令,但没有任何运气。

注意:我可以成功连接并通过 Python 查询数据,所以我认为这是 R 特定的问题。

python r snowflake-cloud-data-platform

12
推荐指数
2
解决办法
4万
查看次数

Snowflake write_pandas 未正确插入日期

我有一个名为“df”的 pandas 数据框,它是根据 Netezza 数据库的 SQL 查询结果创建的。我正在 Jupyter 笔记本上工作。数据框有两行,其中两列(CREATEDDATE 和 STAGEDATE)包含日期时间值。当我运行 print(df) 时,结果如下所示:

                   ID ISDELETED            PARENTID         CREATEDBYID  \
0  017o000003tQRftAAG     false  a0no000000Hrv1IAAR  005o0000001w8wgAAA   
1  017o000003jl52cAAA     false  a0no000000GszDUAAZ  005o0000001w2pTAAQ   

          CREATEDDATE    FIELD OLDVALUE NEWVALUE  STAGEDATE  
0 2015-07-30 14:51:41  created     None     None 2016-06-06  
1 2015-07-16 14:48:37  created     None     None 2016-06-06
Run Code Online (Sandbox Code Playgroud)

如果我运行 print(df.dtypes),结果是这样的:

ID                     object
ISDELETED              object
PARENTID               object
CREATEDBYID            object
CREATEDDATE    datetime64[ns]
FIELD                  object
OLDVALUE               object
NEWVALUE               object
STAGEDATE      datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)

因此,据我所知,我的日期时间列的格式正确,可以使用 write_pandas() 写入 Snowflake。然而,在我这样做之后,雪花中的日期有很大不同: 在此输入图像描述

例如,2016-06-06 的 STAGEDATE 值现在为 48399-06-06。有谁知道如何解决这一问题?我正在使用 pyodbc 从 …

python datetime pandas snowflake-cloud-data-platform

12
推荐指数
2
解决办法
1万
查看次数

NoSuchModuleError:无法加载插件:sqlalchemy.dialects:snowflake

我已经安装了所有必要的软件包:

pip install --upgrade snowflake-sqlalchemy
Run Code Online (Sandbox Code Playgroud)

我正在从雪花文档中运行这个测试代码:

from sqlalchemy import create_engine

engine = create_engine(
    'snowflake://{user}:{password}@{account}/'.format(
        user='<your_user_login_name>',
        password='<your_password>',
        account='<your_account_name>',
    )
)
try:
    connection = engine.connect()
    results = connection.execute('select current_version()').fetchone()
    print(results[0])
finally:
    connection.close()
    engine.dispose()
Run Code Online (Sandbox Code Playgroud)

我的输出应该是雪花版本,例如 1.48.0

但我收到错误:NoSuchModuleError:无法加载插件:sqlalchemy.dialects:snowflake

(我正在尝试在 Anaconda 中运行它)

python sqlalchemy snowflake-cloud-data-platform

11
推荐指数
4
解决办法
1万
查看次数

未找到名为 Snowflake 的模块

我正在工作中的 SageMaker 实例上处理笔记本。我的目标是将我的jupyter笔记本连接到雪花数据库以查询一些数据。以下是有关我的问题的一些详细信息;

(practiceenv) sh-4.2$ python --version
Python 3.8.6
Run Code Online (Sandbox Code Playgroud)

在相同的环境下,我确实运行了命令;

conda list
Run Code Online (Sandbox Code Playgroud)

我可以看到包裹;

# Name                    Version                   Build      Channel
 snowflake-connector-python 2.3.10                    py38h51da96c_0    conda-forge
Run Code Online (Sandbox Code Playgroud)

所以看起来正确的包就在那里。接下来,我在相同的环境中创建了一个jupyter笔记本(condapython3内核)并尝试导入包

import snowflake.connector
ModuleNotFoundError: No module named 'snowflake
Run Code Online (Sandbox Code Playgroud)

我能够安装依赖项。请看截图。在此输入图像描述 我可以获得有关如何调试此错误的帮助吗?感谢帮助。

python-3.x snowflake-cloud-data-platform

11
推荐指数
2
解决办法
7万
查看次数

Snowflake SQL 按最近滚动 30 天内的事务进行过滤

我有一个类似于客户 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)

sql snowflake-cloud-data-platform

11
推荐指数
2
解决办法
1万
查看次数

如何在 DataGrip 中使用参数运行查询?

在DataGrip中,如何将参数传递给SQL查询?假设我有一个查询:

select * from table where date >= ?
Run Code Online (Sandbox Code Playgroud)

那么这里如何绑定变量呢?当我打开参数窗格时,即单击P此处的按钮。

在此输入图像描述

我懂了

没有参数存在

或者:

在此输入图像描述

我应该在哪里设置参数值?

sql jetbrains-ide snowflake-cloud-data-platform datagrip

10
推荐指数
2
解决办法
1万
查看次数

有没有办法现在强制运行雪花的任务(在下一个预定时段之前)?

我计划每 15 分钟运行一次任务:

CREATE OR REPLACE TASK mytask
  WAREHOUSE = 'SHARED_WH_MEDIUM'
  SCHEDULE = '15 MINUTE'
  STATEMENT_TIMEOUT_IN_SECONDS = 3600,
  QUERY_TAG = 'KLIPFOLIO'
AS
  CREATE OR REPLACE TABLE mytable AS
   SELECT * from  xxx; 
;

alter task mytask resume;
Run Code Online (Sandbox Code Playgroud)

我从输出中看到task_history()任务是SCHEDULED

select * from table(aftonbladet.information_schema.task_history(task_name => 'MYTASK')) order by scheduled_time;
QUERY_ID    NAME    DATABASE_NAME   SCHEMA_NAME QUERY_TEXT  CONDITION_TEXT  STATE   ERROR_CODE  ERROR_MESSAGE   SCHEDULED_TIME  COMPLETED_TIME  RETURN_VALUE
***     MYTASK  *** *** ***     SCHEDULED           2020-01-21 09:58:12.434 +0100       
Run Code Online (Sandbox Code Playgroud)

但我希望它立即运行而不等待 SCHEDULED_TIME,有什么方法可以实现这一点吗?

snowflake-cloud-data-platform snowflake-task

10
推荐指数
1
解决办法
9832
查看次数