hive 在Spark SQL中使用ARRAY_CONTAINS匹配多个值

wmtdaxz3  于 2023-08-04  发布在  Hive
关注(0)|答案(1)|浏览(300)

我可以单独使用ARRAY_CONTAINS函数ARRAY_CONTAINS(array, value1) AND ARRAY_CONTAINS(array, value2)来得到结果。但我不想多次使用ARRAY_CONTAINS。有没有一个函数可以同时检查数组中是否存在这两个值。

从评论更新

表格包含:id、label、Array[type]、Array[feature]、textual1、numeric1和numeric2列。
查询为:(

  1. SELECT id, label, textual1
  2. FROM table
  3. WHERE
  4. ARRAY_CONTAINS(type, 'productType1')
  5. AND ARRAY_CONTAINS(feature, 'feature1')
  6. AND ARRAY_CONTAINS(feature, 'feature2') AND numeric1 > 3)
  7. UNION (
  8. SELECT id, label, textual1
  9. FROM table
  10. WHERE
  11. ARRAY_CONTAINS(type, 'productType1')
  12. AND ARRAY_CONTAINS(feature, 'feature1')
  13. AND ARRAY_CONTAINS(feature, 'feature3')
  14. AND numeric2 > 4
  15. )
  16. ORDER BY label

字符串

pgccezyw

pgccezyw1#

您的查询可以写成以下形式-

  1. SELECT id, label, textual1
  2. FROM table
  3. WHERE ARRAY_CONTAINS(type ,'productType1')
  4. AND ARRAY_CONTAINS(feature ,'feature1')
  5. AND (
  6. ( ARRAY_CONTAINS(feature ,'feature2')
  7. AND numeric1 > 3
  8. )
  9. or ( ARRAY_CONTAINS(feature ,'feature3')
  10. AND numeric2 > 4
  11. )
  12. )
  13. ORDER BY label

字符串

展开查看全部

相关问题