【问题标题】:How to filter dataframe by column which contains lists in Presto?如何按包含 Presto 列表的列过滤数据框?
【发布时间】:2021-11-30 12:24:33
【问题描述】:

有查询:

    SELECT 
      value,
      type
    FROM dt 

我明白了:

value   type
12     [increase, upload]
12     [increase, download]
12     [decrease, delete]

我想获取列类型中具有“上传”的值。然而这个:

    SELECT 
      value,
      type
    FROM dt 
    WHERE type LIKE 'upload'

不起作用。该怎么做?

【问题讨论】:

  • 试试LIKE '%upload%',看看会发生什么。
  • 但是,我会考虑将这些类型对存储在单独的列中。

标签: sql presto


【解决方案1】:

假设type 是一个ARRAY 的varchars,您可以简单地使用contains

WITH dataset (value, type) AS (
    VALUES (12, array [ 'increase', 'upload' ]),
        (12, array [ 'increase', 'download' ]),
        (12, array [ 'decrease', 'delete' ])
)

SELECT value,
      type
FROM dataset
WHERE contains(type, 'upload')

输出:

value type
12 [increase, upload]

【讨论】:

    猜你喜欢
    • 2018-12-20
    • 2018-08-07
    • 2021-04-18
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2020-01-18
    • 2022-01-04
    • 2020-11-27
    相关资源
    最近更新 更多