雪花 - 横向不能位于连接的左侧

2024-02-21

我有一个变体数据类型,我正在对其执行横向展平,但随后我需要左连接其中一个 json 元素,以从 Snowflake 中的另一个关系表中查找相应 ID 的值。当我这样做时,它会给我错误“横向视图不能位于连接的左侧”,这是没有意义的,因为如果我不包含外部连接,则创建视图,然后在其顶部创建一个附加视图这个视图,它允许我执行左连接。

Example:

create or replace view  my_view
copy grants
as
select 
    rowid as row_id,
    siteData.value:siteID::int as site_id,
    es.site_name AS site_name
from 
    "RAW_DATA" raw, 
    lateral flatten(datamap:data, outer => true) siteData
    LEFT join ext_site es on es.siteid = siteData.value:siteID
;

我无法解释在 LATERAL 之后无法 LEFT JOIN 的限制,但这里有两个潜在的解决方法来解决这个问题......

选项 1 - 使用 CTE(公用表表达式)

create or replace view my_view
copy grants
as
with my_cte as (
  select 
      rowid as row_id,
      siteData.value:siteID::int as site_id
  from 
      "RAW_DATA" raw, 
      lateral flatten(datamap:data, outer => true) siteData
)
select 
    c.row_id,
    c.site_id,
    es.site_name
from 
    my_cte c
    LEFT join ext_site es on es.siteid = c.site_id
;

选项 2 - 使用内联(匿名)视图

create or replace view my_view
copy grants
as
select 
    c.row_id,
    c.site_id,
    es.site_name
from 
    (
  select 
      rowid as row_id,
      siteData.value:siteID::int as site_id
  from 
      "RAW_DATA" raw, 
      lateral flatten(datamap:data, outer => true) siteData
    ) c
    LEFT join ext_site es on es.siteid = c.site_id
;

就我个人而言,我会使用 CTE 方法,因为我发现它更具可读性。

关于您的使用outer => true,仅当 VARIANT 结构在某种程度上不一致且不保证存在时才需要data你的关键datamap具有一个值(数组或字典)的字典,该值本身包含一个或多个元素或属性。如果不需要,那么我会将其删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

雪花 - 横向不能位于连接的左侧 的相关文章

  • 展平 XSD 模式文档 (HR-XML 3.0) [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个 主要 XSD 文档 它们导入 支持 XSD 文档 这些模式文档恰好来自 HR XML 3 0
  • 使用雪花连接器获取数据会引发 EmptyPyArrowIterator 错误

    我在 python 脚本 plotly dash 应用程序 中使用 python Snowflake 连接器 今天 在我不更改代码的情况下 该应用程序停止工作 我尝试了一些方法来找出可能出现的问题 我什至尝试运行示例代码雪花文档 https
  • Snowflake - 如何检索当前正在执行的过程的名称?

    我想在 javascript 过程本身中访问 Snowflake 中当前执行的过程的名称并将其存储在变量中 当我询问 this 对象时 我可以在 Variant 返回中看到名称 但就 JSON 而言 我相信这是名称而不是值 并且我不确定如何
  • 横向压平两列,雪花中不重复

    我有一个查询 该查询按两个变量进行分组以获得另一个变量的总数 为了维护我的表结构以供以后计算 我列出了另外两个变量以保存查询的下一阶段 但是 当我尝试稍后对 listagg 列进行两次展平时 我的数据会重复多次 示例 my table id
  • 如何使用 Snowflake SQL 解析 ISO 8601 时间戳?

    我正在寻找一个允许我解析 ISO8601 时间戳的通用函数 我知道关于to timestamp tz https docs snowflake net manuals sql reference functions to timestamp
  • 雪花存储过程 While 函数

    我如何在雪花示例中重新创建 while 函数 WHILE counter lt LastRow BEGIN SELECT DateLoad CONVERT date SUNDAY FROM Staging Stg EC WeeksLoad
  • 转置并展平二维索引数组,其中行的长度可能不相等

    我想采用这样的数组并将其组合成 1 个数组 array size 2 0 gt array size 10 0 gt string 1 1 gt string a 2 gt string 3 3 gt string c 1 gt array
  • Groovy 压缩列表或按级别展平

    我正在尝试压缩两个列表 我找到了一个解决方案 使用transpose 来自此链接 Groovy 中是否有 Scala zip 函数的类似物 https stackoverflow com questions 13879489 is ther
  • 是否可以扁平化 MongoDB 结果查询?

    我的 MongoDB 集合中有一个深度嵌套的集合 当我运行以下查询时 db countries findOne data country neighbor name 1 id 0 我最终在这里得到这个嵌套结果 data country ne
  • 雪花上带有 RANGE 的滑动窗框的替代品

    我正在将一些 BigQuery 代码迁移到雪花 但在使用带有范围的 Window 函数时遇到了一些麻烦 这是因为 Snowflake 系列不支持滑动窗框 我需要使用 2 PRECEDING AND CURRENT ROW 之间的范围 逻辑
  • 雪花 - 横向不能位于连接的左侧

    我有一个变体数据类型 我正在对其执行横向展平 但随后我需要左连接其中一个 json 元素 以从 Snowflake 中的另一个关系表中查找相应 ID 的值 当我这样做时 它会给我错误 横向视图不能位于连接的左侧 这是没有意义的 因为如果我不
  • 将参数从 SSRS 数据集传递到 Snowflake

    有没有办法将参数从 SSRS 数据集传递到 Snowflake 以前我将 SSRS 连接到 SqlServer DB 并将参数作为 client id 传递 我想将查询移动到在 Snowflake 上运行 但我不知道如何传递参数来查询 当我
  • 如何从列表列表中制作平面列表?

    我有一个列表 例如 1 2 3 4 5 6 7 8 9 我怎样才能把它压平以获得 1 2 3 4 5 6 7 8 9 If your list of lists comes from a nested list comprehension
  • 如何使用 ON_ERROR=CONTINUE 在 Snowpipe 中有效解析 json

    我正在设置一个 Snowpipe 将数据从 s3 存储桶加载到雪花模式 S3 包含 NDJOSN 格式的文件 一个文件可以包含多条记录 我想处理所有这些记录 哪怕打破一项记录 为此 我需要添加on error continue 管道创建和使
  • 仅克隆雪花元数据

    我想克隆 Snowflake 数据库的外壳 仅元数据 无数据 这可能吗 我检查了文档并没有找到解决方案 如果您只是想获取现有数据库的空壳 则可以克隆整个数据库 然后编写脚本截断数据库中存在的所有表 克隆不会添加任何数据 并且克隆上的截断速度
  • 雪花错误:SQL 访问控制错误:没有足够的权限对​​帐户“”进行操作

    我有一个 Snowflake 的免费试用帐户 我正在尝试创建存储集成 但运行脚本后我收到以下错误 SQL访问控制错误 没有足够的权限来操作帐户 即使对于帐户管理员角色 也会出现上述错误 在 Snowflake 原始 Web UI 不是 Sn
  • 如何使用 Snowflake sql 查询的结果填充 pandas DataFrame?

    使用Python 连接器 https docs snowflake net manuals user guide python connector example html querying data我可以查询雪花 import snowf
  • 将 JSON 值列表分解为 SNOWFLAKE 数据库表中的行

    我有一个如下图所示的表格 它基本上是一个 JSON 经过解析后得到下面的输出 现在我希望将 City 和 order 列中的值列表拆分为行 有人可以帮我吗 期望的输出如下 这是一种方法 首先去掉 和 因为 city 列中的双引号不包含单个数
  • Snowflake支持索引吗?

    在 Snowflake 文档中 我找不到使用索引的参考 Snowflake 是否支持索引 如果不支持 使用 Snowflake 时性能调整的替代方法是什么 Snowflake 不使用索引 这是使 Snowflake 对于任意查询具有良好扩展
  • 雪花存储过程变量绑定错误

    我正在尝试创建并执行一个简单的 Snowflake 存储过程 该过程接受输入参数并创建一个阶段 但是 当我尝试调用该过程时 它会抛出错误 参数值 无效 create or replace procedure raw test create

随机推荐