Значения фильтра куста, принадлежащие только данному списку строк или комбинации из его элементов - PullRequest
0 голосов
/ 16 апреля 2020

Я работаю над таблицами улья, и мне нужно извлечь данные, основанные на географических c местоположениях. Мне нужно только отфильтровать данные региона AMER, я имею в виду, где столбец contrycode содержит только одну или любую комбинацию из этого списка 'ARG', 'BHS', 'BRA', 'CAN', 'CUB', 'MEX', 'USA', 'VEN' . Есть ли оператор улья, который может фильтровать данные на основе этой спецификации: код содержит один или комбинацию из заданного списка ?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Я добавил функцию UDF:

class FilterCodePaysAMER extends UDF {
  def evaluate(s1: String, a1: Array[String]): Boolean = {
    s1
      .replaceAll("\\[", "")
      .replaceAll("\\]", "")
      .split(",")
      .map(x => a1.contains(x))
      .reduce((b1, b2) => b1 && b2)

  }

, поэтому при вызове функции:

val a1 = Array("ARG", "BHS", "BRA", "CAN", "CUB", "MEX", "USA", "VEN")
filter.evaluate("[CAN,USA,ARG,USA,USA,BRA,CAN,BHS,USA,USA,VEN,CUB,MEX,USA,USA,USA,CAN,USA,TUN]", a1)

возвращается false , поскольку TUN не принадлежит входной список, представляющий регион AMER

0 голосов
/ 17 апреля 2020

Привет, создайте таблицу, в которой вы можете составить карту континента и страны. сделать внутреннее соединение и получить данные.

ie  Contmaptable

   country_code , continent


 query wiil look like 
     select * 
     from youtable  yt
     join  Contmaptable cm
     on yt.country_code =cm.country_code
     and continent = 'AMAR'
...