优化SQL视图计数以从雪花上提取信息模式元数据的Pythonic方法

发布于 2025-01-30 00:10:02 字数 1494 浏览 3 评论 0原文

我在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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

错々过的事 2025-02-06 00:10:02

如果您正在寻找如何在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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文