【问题标题】:SQL lateral viewSQL横向视图
【发布时间】:2012-07-12 22:59:19
【问题描述】:

如何在 SQL 中使用 横向视图 从 JSON 字符串中提取值?

“人”表中的示例数据:

name   information
-----  -----------------------
Jen    {"age": 15, "gender":2}
John   {"age": 22, "gender":1}
Jack   {"age": 25, "gender":1}
Pat    {"age": 55, "gender":3}

【问题讨论】:

  • 我的建议是编写一个脚本来迭代每一行并将其存储到正确规范化的表中,而不是存储 JSON。
  • 带有 JSON 的表超过 1TB,因此将其存储在每列的表单中将不可用。
  • 但是在这么大的表上,解析 JSON 所需的字符串操作也将完全无法使用(更是如此)
  • 这是 SQL 模式获胜的地方,数据是高度规则的、非常可索引的等。IMO 将其建模到您的模式中会做得更好。此外,您将占用更少的空间(想想这个:该表数据中的字节“性别”有多少次?)
  • 你能告诉我们表模式吗?

标签: mysql sql syntax hive


【解决方案1】:
SELECT name , info\
FROM people\
LATERAL VIEW explode(information) exploded_information_view AS info

应该是这样的:

name / info

Jen    /   "age": 15 \
Jen     /  "gender":2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多