优化 SQL VIEW 计数以从 Snowflake 中提取信息模式元数据的 Pythonic 方法
Pythonic way to optimize SQL VIEW count to extract information schema metadata from Snowflake
我在 Snowflake
中有 12 个 VIEW table,我想从 Snowflakes
INFORMATION Schema 中提取 TABLE_NAME,CREATED,LAST_ALTERED 用于视图tables,还想获取每 12 个 VIEW tables 的行数,以及下面提到的 Base table 的元数据 code.I 想知道是否有办法获取使用以下代码进行 12 VIEW tables 的行计数,或者有任何更好的方法来完成此任务,即为 Base Table 和 VIEW [= 获取 TABLE_NAME,CREATED,LAST_CREATED 元数据37=] 在 Snowflake
?
假设我的前 4 个 VIEW table 名称是“V_ACCOUNT”、“V_ADDRESS”、“V_COUNTRY”、“V_ORDER”。 =15=]
下面是我目前的代码。
提前感谢您的时间和努力!
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()
如果您正在寻找如何在 Python
中动态创建视图,请查看 Barmar 对我的另一个问题 的回答。这将提示您需要为动态视图创建做些什么。谢谢 Barmar 的帮助!
我在 Snowflake
中有 12 个 VIEW table,我想从 Snowflakes
INFORMATION Schema 中提取 TABLE_NAME,CREATED,LAST_ALTERED 用于视图tables,还想获取每 12 个 VIEW tables 的行数,以及下面提到的 Base table 的元数据 code.I 想知道是否有办法获取使用以下代码进行 12 VIEW tables 的行计数,或者有任何更好的方法来完成此任务,即为 Base Table 和 VIEW [= 获取 TABLE_NAME,CREATED,LAST_CREATED 元数据37=] 在 Snowflake
?
假设我的前 4 个 VIEW table 名称是“V_ACCOUNT”、“V_ADDRESS”、“V_COUNTRY”、“V_ORDER”。 =15=]
下面是我目前的代码。
提前感谢您的时间和努力!
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()
如果您正在寻找如何在 Python
中动态创建视图,请查看 Barmar 对我的另一个问题