Databricks/Spark SQL - 如何在地图类型字段中获取数据
Posted
技术标签:
【中文标题】Databricks/Spark SQL - 如何在地图类型字段中获取数据【英文标题】:Databricks/Spark SQL - how to fetch data in a map type field 【发布时间】: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 字段? 请随时仅分享对公共文档的引用。
【问题讨论】:
【参考方案1】:如果您只需要使用 SQL 执行此操作,则需要使用方括号 []
来访问值(请参阅 docs)。它们适用于数组和映射,仅适用于您需要提供索引的数组,而对于您需要提供值的映射,例如 column_name['crmID']
。
附:您可能还需要使用map_keys
、map_values
等功能 - 只需点击链接页面底部的链接即可
【讨论】:
以上是关于Databricks/Spark SQL - 如何在地图类型字段中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
基于 Databricks Spark SQL 子查询的查询抛出 TreeNodeException
databricks spark SQL中date_format函数的预期输入日期模式是啥