【问题标题】:Databricks/Spark SQL - how to fetch data in a map type fieldDatabricks/Spark SQL - 如何在地图类型字段中获取数据
【发布时间】:2021-11-12 14:41:02
【问题描述】:

在 CDP 数据湖中,profiles 表具有 identityMap 字段:

[IdentityType -> IdentityValue]

示例值如下所示:

["crmID" -> "{(NULL,crm123,NULL)}", 
 "loyaltyID" -> "{(NULL,loy456,NULL)}", 
 "accountID" -> "{(NULL,act789,NULL)}"]

为了验证 ID 的摄取和合并过程,客户端希望在该地图字段上运行一些检查,例如:

  • 每行有多少个键
  • 每个键有多少个值

我曾经精通 TSQL,但那些地图结构对我来说是新的,不知道如何探索这些数据。

可以使用哪种函数或语法来获取 identityMap 字段? 请随时仅分享对公共文档的引用。

【问题讨论】:

    标签: apache-spark-sql databricks databricks-sql


    【解决方案1】:

    如果您只需要使用 SQL 执行此操作,则需要使用方括号 [] 来访问值(请参阅 docs)。它们适用于数组和映射,仅适用于您需要提供索引的数组,而对于您需要提供值的映射,例如 column_name['crmID']

    附:您可能还需要使用map_keysmap_values 等功能 - 只需点击链接页面底部的链接即可

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多