我正在使用Flink SQL,下面的方案显示了我的源数据(属于某些Twitter数据):
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 (...);
我只想得到一个集合中的主题标签。因此,我必须将构造的对象(行)集合映射到字符串数组。
就像这个计划:
CREATE TABLE `twitter_raw` (
`entities` ROW(
`hashtags` STRING ARRAY,
`urls` STRING ARRAY,
`user_mentions` STRING ARRAY
)
)
WITH (...);
如何使用Flink-SQL实现这一点?可能是内置函数(JSON-函数?)或者拥有UDF,或者我必须编写一个DataStream作业?
提前谢谢。
发布于 2021-12-30 16:20:26
在这种情况下,SQL命令UNNEST
会有所帮助。就像星火中的EXPLODE
。
您可以通过为hashtags
数组中的每个散列创建一个新行来解决这个问题:
SELECT hashtag, index
FROM twitter_raw
CROSS JOIN UNNEST(hashtags) AS t (hashtag, index)
发布于 2021-12-24 10:05:03
您可以定义一个计算行,也可以定义一个视图,然后使用点标记提取哈希标签字段。例如:
CREATE VIEW hashtags_raw (hashtags) AS
SELECT entities.hashtags AS hashtags FROM twitter_raw
https://stackoverflow.com/questions/70460675
复制相似问题