python - 在 Python 脚本中使用 Snowflake SQL 中的变量
问题描述
我正在尝试创建一个包含 Snowflake SQL 中的变量的视图。整个事情都是在 Python 脚本中完成的。最初,我尝试了绑定变量方法,但绑定在视图创建 SQL 中不起作用。我还有其他方法可以继续吗?我已经给出了下面的代码。
代码:
import snowflake.connector as sf
import pandas
ctx = sf.connect (
user = 'floatinginthecloud89',
password = '',
account = 'nq13914.southeast-asia.azure',
warehouse = 'compute_wh',
database = 'util_db',
schema = 'public'
)
print("Got the context object")
cs = ctx.cursor()
print("Got the cursor object")
column1 = 'attr_name';
try:
row = cs.execute("select listagg(('''' || attr_name || ''''), ',') from util_db.public.TBL_DIM;")
rows = cs.fetchall()
for row in rows:
print(row)
print(rows)
row1 = cs.execute("""CREATE OR REPLACE table util_db.public.HIERARCHY_VIEW_2 AS SELECT * FROM (SELECT MSTR.PROD_CODE AS PROD_CODE,DIM.ATTR_NAME AS ATTR_NAME,MSTR.ATTR_VALUE AS ATTR_VALUE FROM TBL_DIM DIM INNER JOIN TBL_MSTR MSTR ON DIM.ATTR_KEY=MSTR.ATTR_KEY ) Q
PIVOT (MAX (Q.ATTR_VALUE) FOR Q.ATTR_NAME IN (*row))
AS P
ORDER BY P.PROD_CODE;""")
rows1 = cs.fetchall()
for row1 in rows1:
print(row1)
finally:
cs.close()
ctx.close()
错误:
文件“C:\Users\Anand Singh\anaconda3\lib\site-packages\snowflake\connector\errors.py”,第 179 行,在 default_errorhandler 中引发 error_class(
ProgrammingError: 001003 (42000): SQL 编译错误:第 2 行语法错误,位置 65 意外“行”。
解决方案
查看 Python绑定示例
你的代码出现了,你需要
row1 = cs.execute("""CREATE OR REPLACE table util_db.public.HIERARCHY_VIEW_2 AS
SELECT * FROM (
SELECT MSTR.PROD_CODE AS PROD_CODE,DIM.ATTR_NAME AS ATTR_NAME,MSTR.ATTR_VALUE AS ATTR_VALUE
FROM TBL_DIM DIM
INNER JOIN TBL_MSTR MSTR
ON DIM.ATTR_KEY=MSTR.ATTR_KEY
) Q
PIVOT (MAX (Q.ATTR_VALUE) FOR Q.ATTR_NAME IN (%s))
AS P
ORDER BY P.PROD_CODE;""", row)
但*row
会将许多参数传递给我已更改为构建字符串或分隔为单个字符串的逗号。
推荐阅读
- mongodb - 如何查询数组内对象内的数组?
- javascript - 使用 ref 获取组件位置时出错(ReactCannot 读取属性 'getBoundingClientRect' of null")
- javascript - React 从另一个组件向有状态组件传递数据
- sql-server - Azure 数据工厂 - 数据流 - 运行 SQL 用户定义函数
- python - 通过“控制台”运行代码和定期运行代码有什么区别?
- r - strsplit 是在 R 中分隔字符串的最快方法吗
- python - python从对象中读取一个值
- python - 为什么我的 selenium 函数有时会起作用而其他函数不起作用?我可以无限运行它直到它起作用吗?
- .net - 主表有数据而从属表没有数据时如何添加外键
- mysql - MySQL:错误代码:1111。组函数的使用无效