【BigQuery 초보자의 잡기 vol.3】Re:dash 입력치를 IN구의 조건으로 사용~실무의 분석으로 사용하기 쉽게 한 이야기

2654 단어 BigQueryredash
주식회사 오즈비전 유코 ( @terra_yucco )입니다.
최근 BigQuery에서 쿼리를 작성하는 삶을 살았기 때문에 오늘도 그 관계가 있습니다.

전제



오즈비전에서는 AWS에 세워진 MySQL Aurora 및 Google Analytics와 같은 데이터 소스를 탐색하기 위해 Re:dash를 세워 운영하고 있습니다.
최근 BigQuery가 그 데이터 소스에 동료 들어가고, 그 자리수 차이의 연산 능력에 반하는 사람이 속출. 따라서 대량 데이터를 스캔하는 집계는 BigQuery에 데이터를 주기적으로 동기화하고 해당 데이터 소스에서 참조하는 방법을 사용합니다.

계기





스프레드시트도 병용하여 데이터를 필터링하고 있는 멤버로부터의 피드백이 계기였습니다.
※이 근원이 되는 추출도 쿼리로 하면 됩니다만 거기는 눈을 감아 주세요

쉼표로 구분하면



split으로 좋다고 생각했습니다.
@xxxx 使う先がわからないのですけど、replaceってので行けるかと思いますよ。

サンプル
select replace("{{ value }}", " ", ",")

redashのvalue窓には 1 2 3 を入れました。
スプレッドシートで縦に 1 2 3 って入れたものをコピペした状態です。

이것만으로는 어디까지나 쉼표로 구분된 문자열이 되는 것만으로, 그 후 다른 쿼리와 결합해 IN 절로서 이용하는 것 같은 것은 할 수 없었습니다.

IN 절로 사용하는 방법



다른 Redash 쿼리에서도 copipe&소개변수로 사용할 수 있게 하고 싶었기 때문에 명명이 잡이지만, 최종적으로는 이것으로 움직일 수 있었습니다.
WITH
  -- {{ input1 }} の文字列に対して以下の順番で操作をして、WITH の対象にできるデータ次元に変換
  -- 1. スペース分割で配列に変換
  -- 2. 配列を展開する UNNEST() 関数を利用し SELECT で取得
  -- 3. このままでは STRING 型
  -- 4. 今回は数値と比較したいので INT64 に変換
  -- 5. data1 という名前で結合先で使えるようになる
  INPUT1 AS (
    SELECT CAST(raw1 AS INT64) AS data1
      FROM UNNEST(split("{{ input1 }}", " ")) AS raw1
  )
-- この後使いたい SELECT などのクエリをここに書く

코멘트에도 쓴 것처럼, 이용할 때 STRING이면 CAST는 필요 없습니다.

요약



건수가 적은(get 파라미터로 건네줄 수 있는 범위)의 데이이면, 스프레드시트로부터 카피해 와 Re:dash 의 변수창에 넣는 것만으로, 쿼리의 조건에 사용할 수 있게 되었습니다.

좋은 웹페이지 즐겨찾기