最近はBigQueryでばかりクエリを書いていたので、HiveQLで書く必要性に駆られたときに、その方言の違いにだいぶ苦戦した。
なので苦労したことの備忘録。
BigQueryでは特に気にしたことはなかった。
他人のクエリをコピーした場合など、"あいうえお" と 'かきくけこ' の両方が混在することなどザラ。
(それもどうかと思うけど)
select
id
, case
when id = 1 then "株式会社A" -- ダブルクォーテーションでもOK
when id = 2 then '株式会社B'
end as company_name
これがHiveだと、シングルクォーテーションで囲む必要があるっぽい。
select
id
, case
when id = 1 then '株式会社A' -- シングルクォーテーションで囲む
when id = 2 then '株式会社B' -- シングルクォーテーションで囲む
end as company_name
よく集計で行うサブクエリを使った処理を書くと、こんな感じのエラーが返される。
cannot recognize input near '' '' '' in subquery source hive
調べてみると、サブクエリには命名が必須っぽい。
どういうことかというと、BigQueryの場合は以下の書き方でも一応実行できる。
SELECT
hogehoge
, sum_hugehuge
FROM
(
SELECT
hogehoge
, sum(hugehuge) as sum_hugehuge
)
これがHiveだと、以下のように参照するエイリアスが1つであっても命名が必須っぽい。
これを怠ると、上記のエラーが出て怒られる。
SELECT
hogehoge
, sum_hugehuge
FROM
(
SELECT
hogehoge
, sum(hugehuge) as sum_hugehuge
) AS sub -- サブクエリに名前をつける