问题标签 [snowflake-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
snowflake-sql - 我可以在 CASE WHEN THEN 子句下使用 'OR' 语句吗?
我在雪花上有一张my_table表:
公司 | 交易 |
---|---|
美国人 | 321-美国鹰 123 |
耐克 | 080* 耐克_74093 |
美国人 | 00 美洲鹰_42 |
阿迪达斯 | 0101阿迪达斯**093 |
美国人 | 987 美国航空公司_4 |
美国人 | 17 美国运通 02 |
美国人 | 09 美国-EAGLE_42 |
美国人 | 0* 美国航空公司 **7 |
美国人 | 101美国运通*9 |
可口可乐 | 98*可口可乐__4237 |
COMPANY 栏是公司的简称(基本上是公司名称的第一个字)。
TRANSACTIONS 列是我的数据集中显示的交易名称。由于处理方式不同,每个交易名称中都会有一些前缀和后缀。
对于Company列值“American”, Transactions列中可能对应有“American Eagle”、“American Airline”、“American Express”等。
如果我只想保留来自American Eagle交易的行,而 Company 列的值为“ American ”与所有其他公司的交易,我该怎么办?
我正在寻找的结果表:
公司 | 交易 |
---|---|
美国人 | 321-美国鹰 123 |
耐克 | 080* 耐克_74093 |
美国人 | 00 美洲鹰_42 |
阿迪达斯 | 0101阿迪达斯**093 |
美国人 | 09 美国-EAGLE_42 |
可口可乐 | 98*可口可乐__4237 |
下面是我试图解决问题的 SQL 查询,我在这里遇到的挑战甚至是 American Eagle,Transactions 列的值可能类似于"AMERICAN EAGLE"(中间有空格) 、"AMERICANEAGLE"(没有空格)、"AMERICAN -EAGLE"(中间的连字符)等。因此,我尝试在我的 SQL 查询中使用 CASE WHEN ... THEN (...OR...) 语句。但是,以下查询不起作用并弹出错误。
我可以在“THEN”子句下使用“OR”语句,因为 CASE WHEN THEN 只返回一个值吗?
sql - DAY 功能反转
我目前正在尝试获取一个月的相反日期。因此,如果它是 3 月的第 1 天,则相反的日期是 31,依此类推。
有多种方法可以获得一个月中的哪一天,但我想不出一种相反的方法(尤其是当你的月份少于 31 天时)。
我正在研究 Snowflake 并获得月份中的某一天,我将使用 day() 函数。
这导致
现在有人可以帮我得到相反的顺序吗?在此示例中,它应该是月份的第 30 天。
sql - 使用 Snowflake SQL 如何找到两条记录,然后根据这些记录将另一条记录更改为使用局部变量的预定义记录?
使用 SQL,您如何使用两条记录来查找位置、保留该位置并使用该记录将“Nonsense”值替换为保留的位置?我将展示到目前为止我能够写的内容,然后写下我仍在尝试弄清楚的内容:
当前表格数据;“ACCTS_OF_SUPERHEROS”表:
期望的输出:
security - 使用创建表的潜在安全漏洞
在表上使用数据屏蔽时,我发现了一个意外的结果。我有一个以提升角色运行的进程,它加载包含敏感数据的表。因为摄取的数据实际上是对表的完整刷新,所以过程运行如下:
表 A 在多个列上存在数据屏蔽规则。
表 B 是使用创建的create transient table B like A copy grants
数据在表 B 中加载和处理。
表 A 使用更新alter table A swap with B
表 B 被删除。
发生的情况是创建的表 B 缺少应用于表 A 中存在的特定列的数据屏蔽策略。交换时,表 A 上的先前屏蔽策略被消除,因为它不再存在于表 B 上。
要解决此问题,创建表 BI 后必须重新应用数据屏蔽策略。一旦这到位,它就会在交换操作中被交换到表 A。
我认为这对于没有预料到这种行为的开发人员来说是一个缺陷,如果他们没有正确测试他们的工作,可能会暴露信息。
我的预期行为是:
(1) 像 A 一样创建表 B 时,表 B 还包括该表上的所有数据策略,这可能是列掩码或行级安全性。
(2) 当表 B 与 A 交换时,被交换到 (A) 的表维护该表上的数据策略。
我的偏好是(1)。也许这可以是一个额外的命令,比如
这真的是一个安全漏洞还是我错过了什么?
snowflake-sql - 雪花中的日期枚举
我正在使用 Snowflake SQL,我对如何转换下面的表格感到困惑,非常感谢您的专家帮助!
起始表:
店铺 | 开始日期 | 结束日期 | 标题 |
---|---|---|---|
凤凰 | 2021-03-19 | 2021-03-22 | 储存和保存 |
亚特兰大 | 2021-09-30 | 2021-10-01 | 节省 10% |
转换成这张表:
店铺 | 日期 | 标题 |
---|---|---|
凤凰 | 2021-03-19 | 储存和保存 |
凤凰 | 2021-03-20 | 储存和保存 |
凤凰 | 2021-03-21 | 储存和保存 |
凤凰 | 2021-03-22 | 储存和保存 |
亚特兰大 | 2021-09-30 | 节省 10% |
亚特兰大 | 2021-10-01 | 节省 10% |
view - 将视图保存在某个模式而不是 PUBLIC
我在雪花中创建了一个视图:
目前,它保存在 PUBLIC 模式中。如何将其保存在其他位置?例如,在“PROD_DWH”数据库中模式“DBT_USER_MARKT”的“视图”部分下?
snowflake-cloud-data-platform - 如何将 SNOWPIPE 从一种模式移动到另一种模式?
我怎样才能将雪管从一种模式移动到另一种模式?如果我使用以下命令,它会替换吗?
Create or replace pipe <target_schema>.<mypipe_name> as
我找不到用于重命名管道或更改架构的 alter 语句。
amazon-s3 - 从 S3 复制数据时尝试映射列出现错误 SQL 编译错误:在“s3:bucket/file.csv.gz”中找到无效的 URL 前缀
我正在尝试通过映射将字段从 s3 csv 文件映射到雪花表,因为雪花表中的列比旧的过时 s3 文件中的列更多。
我能够在没有映射的情况下运行,因为我收到一个错误,即表中的列多于输入文件中的列。
我得到的映射错误是:SQL 编译错误:在以下位置找到无效的 URL 前缀:'s3://ibucket/jira_scripts/history/2016-12-07.csv.gz'
感谢您的任何指示。