优化SQL视图计数以从雪花上提取信息模式元数据的Pythonic方法
我在snowflake
中有12个查看表,并且我想提取table_name,创建,last_alterive in snowflakes
信息模式用于查看表格,并且还希望每12个行计数查看表,以及以下代码中提到的基础表的元数据。我想知道是否有办法使用以下代码获得12个查看表的代码或此任务有任何更好的方法雪花
中的表和查看表?
假设我的第一个4个查看表名是“ v_account”,“ v_address”,“ v_country”,“ v_order”,“ v_order”
是我的代码。
事先感谢您的时间和努力!
Python代码:
import pandas as pd
import snowflake.connector
conn = snowflake.connector.connect(
user="MY_USER",
password="MY_PSWD",
account="MY_ACCOUNT",
warehouse="COMPUTE_WH",
database="SNOWFLAKE_SAMPLE_DATA",
schema="INFORMATION_SCHEMA",
role="SYSADMIN"
)
cur = conn.cursor()
tables = ['CUSTOMER', 'CALL_CENTER', 'CUSTOMER_ADDRESS']
view_tables=['V_ACCOUNT','V_ADDRESS','V_COUNTRY','V_ORDER']
cur.execute(
f"""
SELECT TABLE_NAME, ROW_COUNT, CREATED, LAST_ALTERED
FROM TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_SCHEMA='TPCDS_SF100TCL'
AND TABLE_NAME IN ({','.join("'" + x + "'" for x in tables)})
UNION
SELECT (select count(*) from DB.SCHEMA.V_ACCOUNT) AS ROW_COUNT,TABLE_NAME,CREATED,LAST_ALTERED FROM VIEWS WHERE TABLE_NAME="V_ACCOUNT"
"""
)
df = cur.fetch_pandas_all()
finally:
cur.close()
conn.close()
I have 12 VIEW tables in Snowflake
and I would like to extract TABLE_NAME,CREATED,LAST_ALTERED from Snowflakes
INFORMATION Schema for View tables, and also want to get row count for each 12 VIEW tables, along with metadata for Base table mentioned in below code.I was wondering if there is way get row count using below code for 12 VIEW tables or there is any better approach for this task i.e. getting TABLE_NAME,CREATED,LAST_CREATED metadata for Base Table and VIEW table in Snowflake
?
Let's say my first 4 VIEW table names are "V_ACCOUNT","V_ADDRESS","V_COUNTRY","V_ORDER"
Below is my code so far.
Thanks in advance for your time and efforts!
Python Code:
import pandas as pd
import snowflake.connector
conn = snowflake.connector.connect(
user="MY_USER",
password="MY_PSWD",
account="MY_ACCOUNT",
warehouse="COMPUTE_WH",
database="SNOWFLAKE_SAMPLE_DATA",
schema="INFORMATION_SCHEMA",
role="SYSADMIN"
)
cur = conn.cursor()
tables = ['CUSTOMER', 'CALL_CENTER', 'CUSTOMER_ADDRESS']
view_tables=['V_ACCOUNT','V_ADDRESS','V_COUNTRY','V_ORDER']
cur.execute(
f"""
SELECT TABLE_NAME, ROW_COUNT, CREATED, LAST_ALTERED
FROM TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_SCHEMA='TPCDS_SF100TCL'
AND TABLE_NAME IN ({','.join("'" + x + "'" for x in tables)})
UNION
SELECT (select count(*) from DB.SCHEMA.V_ACCOUNT) AS ROW_COUNT,TABLE_NAME,CREATED,LAST_ALTERED FROM VIEWS WHERE TABLE_NAME="V_ACCOUNT"
"""
)
df = cur.fetch_pandas_all()
finally:
cur.close()
conn.close()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您正在寻找如何在
python
中动态创建视图,请查看Barmar在我的其他问题上的答案在这里。这将使您暗示要为动态视图创建需要做什么。谢谢,Barmar的帮助!If you are looking for how to dynamically create a view in
Python
, then please take a look at Barmar's answer on my other question here. This will give you a hint of what needs to be done for dynamic view creation. Thanks, Barmar for help!