gpt4 book ai didi

sql - 将我们所有的 SQL、NoSQL 数据复制到 Snowflake 后,有没有办法在数百个表、Json 和其他数据中检测 "relationships"?

转载 作者:行者123 更新时间:2023-12-04 13:29:29 25 4
gpt4 key购买 nike

为这个有点奇怪的问题道歉......
来自多个事务、操作和事件源的数据已成功摄取到 Snowflake。但是,我们的大多数分析和数据科学用例都涉及:

  • 非规范化数据
  • 跨多个结构化和半结构化源构建模型,即了解数据如何在源内和源之间“连接”,尤其是在源之间没有一致的命名约定命名约定的情况下

  • Snowflake 中是否有一种方法(直接或通过其他工具)可以自动检测数据之间的关系,而无需我们编写多个连接?其他云数据仓库是否提供此功能(直接或通过 3rd 方附加组件)?

    最佳答案

    这是一个很好的问题。
    Snowflake 确实维护有关表、列等的元数据 - 但没有任何推断关系的内容。也就是说,您可以使用元数据来查看两个对象之间存在多少重叠。例如:

    -- Find all tables that share n column names
    select c1.table_catalog || '.' || c1.table_schema || '.' || c1.table_name object1,
    c2.table_catalog || '.' || c2.table_schema || '.' || c2.table_name object2,
    count(1) overlapping_column_names
    from snowflake.account_usage.columns c1,
    snowflake.account_usage.columns c2
    where upper(c1.column_name) = upper(c2.column_name)
    group by 1, 2
    order by 3 desc;
    对于半结构化,它有点复杂,但是 Snowflake 中有函数可以提取变体数据中的不同键。下面的 SQL 将识别在 10% 的变体数据样本中观察到的唯一键:
    with c1 as (select distinct object_keys(json_data) keys 
    from customer_interactions sample(10)
    )
    select distinct 'TABLE1' table_name, upper(value::string) keyname
    from c1, lateral flatten(c1.keys)
    ;
    您可以将其与其他变体数据集进行比较,以查看两者之间有多少键重叠。

    关于sql - 将我们所有的 SQL、NoSQL 数据复制到 Snowflake 后,有没有办法在数百个表、Json 和其他数据中检测 "relationships"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65932737/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com