2017年1月30日月曜日

2017年1月26日木曜日

【トレジャーデータ】複数のグーグルアカウントを登録する方法

グーグルアカウント登録の流れ

  1. ブラウザを登録したいグーグルアカウントでログインしている状態にする(これができていないと、5.でアカウントを追加することができない)
  2. トレジャーデータにログイン
  3. View old Consoleで旧コンソールに戻す(2017/1/26現在、旧コンソールのみしか対応していないため)
  4. 画面右上にある自分のアカウント名をクリックしてMy profileを選択
  5. 画面右下にあるGoogle AccountsのAdd Accountをクリック
  6. 許可をクリック
  7. 他に追加したいアカウントがあれば1.に戻る。無ければ終了
上記のようにすれば複数のグーグルアカウントを追加できる。

2017年1月23日月曜日

【SQL:PRESTO】完全自分用

ユーザ毎の閲覧順序・間隔やカテゴリページ毎の閲覧順序・UUを集計

事前にユーザ別のアクセスカテゴリページと期間内初アクセス日を集計したテーブルを構築

--閲覧間隔日数を出す場合は適時クエリを修正
WITH sq_sort_now AS(
  SELECT
    tracking_data,
    node,
    min_accesstime
    --テーブル名変更
  FROM
    mezzo_min_access_time
  ORDER BY
    min_accesstime,
    tracking_data
),
sq_sort_next AS(
  SELECT
    tracking_data,
    node,
    min_accesstime
    --テーブル名変更
  FROM
    mezzo_min_access_time
),
sq_order AS(
  SELECT
    sq_sort_now.tracking_data,
    sq_sort_now.node AS now_node,
    sq_sort_now.min_accesstime AS now_accesstime,
    sq_sort_next.node AS next_node,
    sq_sort_next.min_accesstime AS next_accesstime
  FROM (sq_sort_now)
  JOIN
    (sq_sort_next)
    ON (
      sq_sort_now.tracking_data = sq_sort_next.tracking_data
      AND sq_sort_now.node != sq_sort_next.node
    )
  ORDER BY
    sq_sort_now.tracking_data
),
sq_order_diff AS(
  SELECT
    tracking_data,
    now_node,
    now_accesstime,
    next_node,
    next_accesstime,
    date_diff(
      'day',
      -- 他にも minute, hour, week, monthなども指定できる
      CAST(
        now_accesstime AS TIMESTAMP
      ),
      CAST(
        next_accesstime AS TIMESTAMP
      )
    ) AS time_diff
  FROM
    sq_order
  WHERE
    date_diff(
      'day',
      -- 他にも minute, hour, week, monthなども指定できる
      CAST(
        now_accesstime AS TIMESTAMP
      ),
      CAST(
        next_accesstime AS TIMESTAMP
      )
    )>= 0
  ORDER BY
    tracking_data
),
sq_uu AS(
--閲覧間隔日数を含むデータ
--ここのデータを出したい場合は本クエリを最終結果とする
  SELECT
    now_node,
    next_node,
    time_diff,
    COUNT(DISTINCT tracking_data) AS uu
  FROM (sq_order_diff)
  GROUP BY
    now_node,
    next_node,
    time_diff
  ORDER BY
    now_node,
    next_node,
    time_diff
)
--順序のみ出す ネットワーク作図用データ
SELECT
  now_node,
  next_node,
  sum(uu) sum_uu
FROM
  sq_uu
WHERE
 uu > 10
GROUP BY
  now_node,
  next_node
ORDER BY
  now_node,
  next_node

2017年1月5日木曜日

【トレジャーデータ:エラー】Query exceeded maximum time limit of 30.00m

クエリを実行したところ、

Query exceeded maximum time limit of 30.00m

というエラーがでた。。

中の人に聞いたところ、
20GB以上のメモリを利用すると共有リソースに移行するらしい。
その場合、実行時間が30分間を超えると処理が中断されるとのこと

回避方法は、
  • クエリのチューニング
  • Workflowを使って分割したクエリを一連の流れで処理
などなど

【トレジャーデータ】output result よりinsertの方が早く実行結果をテーブルに出力できる

トレジャーデータの人から聞いたところ、
  • Output result
Prestoクエリ実行

結果保持

BulkImport実行

  • INSERT文
Prestoクエリ実行

出力

となり、INSERTを使うほうがステップ数が短い