首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flink-SQL:从嵌套对象中提取值

Flink-SQL:从嵌套对象中提取值
EN

Stack Overflow用户
提问于 2021-12-23 10:18:13
回答 2查看 521关注 0票数 2

我正在使用Flink SQL,下面的方案显示了我的源数据(属于某些Twitter数据):

代码语言:javascript
复制
CREATE TABLE `twitter_raw` (
    `entities` ROW(
        `hashtags` ROW(
            `text` STRING,
            `indices` INT ARRAY
        ) ARRAY,
        `urls` ROW(
            `indices` INT ARRAY,
            `url` STRING,
            `display_url` STRING,
            `expanded_url` STRING
        ) ARRAY,
        `user_mentions` ROW(
            `screen_name` STRING,
            `name` STRING,
            `id` BIGINT
        ) ARRAY
    )
)
WITH (...);

我只想得到一个集合中的主题标签。因此,我必须将构造的对象(行)集合映射到字符串数组。

就像这个计划:

代码语言:javascript
复制
CREATE TABLE `twitter_raw` (
    `entities` ROW(
        `hashtags` STRING ARRAY,
        `urls` STRING ARRAY,
        `user_mentions` STRING ARRAY
    )
)
WITH (...);

如何使用Flink-SQL实现这一点?可能是内置函数(JSON-函数?)或者拥有UDF,或者我必须编写一个DataStream作业?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-30 16:20:26

在这种情况下,SQL命令UNNEST会有所帮助。就像星火中的EXPLODE

您可以通过为hashtags数组中的每个散列创建一个新行来解决这个问题:

代码语言:javascript
复制
SELECT hashtag, index
FROM twitter_raw 
CROSS JOIN UNNEST(hashtags) AS t (hashtag, index)
票数 2
EN

Stack Overflow用户

发布于 2021-12-24 10:05:03

您可以定义一个计算行,也可以定义一个视图,然后使用点标记提取哈希标签字段。例如:

代码语言:javascript
复制
CREATE VIEW hashtags_raw (hashtags) AS 
  SELECT entities.hashtags AS hashtags FROM twitter_raw
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70460675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档