かれ4

かれこれ4個目のブログ

HiveでStringのArrayから、辞書順に並べて一番[最初|最後]のものを取り出す不細工な方法

辞書順に並べて最初のものを取り出す。

SELECT 
  REGEXP_REPLACE(
    CONCAT_WS('###',
      SORT_ARRAY(ARRAY("ag",
          "aa",
          "ab"))),
    "(.*?)###.*",
    "$1"
  );
aa

辞書順に並べて最後のものを取り出す。

SELECT 
  REGEXP_REPLACE(
    CONCAT_WS('###',
      SORT_ARRAY(ARRAY("ag",
          "aa",
          "ab"))),
    ".*###(.*)",
    "$1"
  );
ag

もっとかっこいい方法があるはず。