注目の投稿

【kepler.gl】コロナ対策による人流の変化も地図上に可視化(各種メディアで報道)

kepler.glのサイト画面 kepler.glを使ってコロナ対策の効果を分析したところ、テレビ、新聞、ネットのメディアから問い合わせや報道依頼が殺到。今も、土日返上で都内や全国の人流変化を分析しています。この記事では人流変化の可視化に便利なkepler.glにつ...

ラベル CAST の投稿を表示しています。 すべての投稿を表示
ラベル CAST の投稿を表示しています。 すべての投稿を表示

2019年11月26日火曜日

【トレジャーデータ】トレジャーデータの結果をタブローオンラインに出力する

トレジャーデータの結果をタブローに出力

トレジャーデータ(treasure data)の結果をタブローオンライン(tableau online)に出力する方法をご紹介します。できてみればすごい簡単なんですが、私自身は何も知らずにやった結果、いろいろ調べたりエラーに振り回されて結構時間かかってしまいました。。

1.Catalogからtableauを選択してAuthenticationsを作成

catalogからtableauを選択
トレジャーデータにログインして、catalogからtableauを選択します。

2.ホスト名とタブローのログイン情報を入力

Server versionで「Tableau Online」を選択

タブローオンラインにログインした際のURLとして下記のものがあるとします。

https://*****.online.tableau.com/#/site/*この部分はサイトID*/home

ここでホスト名は、「*****.online.tableau.com」です。UsernameとPasswordは、タブローにログインするものと同じです。Use SSL?とVerify server certificate?は任意でチェックしてください。今回は、タブローオンラインに出力するので、Server versionをTableau Onlineにします。

3.Export Results To に上記で作ったAuthenticationsを選択

上記作成のAuthentications「test_tableau_online」を選択
SQLの出力先として上記で作成したtest_tableau_online(名前は任意)を選択します。

4.Export Resultsの内容を設定する

Site IDに注意

ここでエラーが沢山でて苦労しました(泣)。Site IDのところですが、TDのサイトに「Site ID The URL of the site to sign in to, it’s required for Tableau Online」と記載されていたので、URL全部書くのかなと勘違いしてエラー([ERROR] (main): HTTP 301 Moved Permanently)が出まくりました。実際は、下記のタブローオンラインのURLを例にすると、site直下の「*この部分はサイトID*」がSite IDになります。

https://*****.online.tableau.com/#/site/*この部分はサイトID*/home

5.トレジャーデータでSQLを実行するとタブローにデータが出力されます

もし、401エラー([ERROR] (main): HTTP 401 Unauthorized)が出たら下記の原因が考えられます。

  • authentication設定画面で、host, user, passwordなどが間違っていた場合
  • result output設定画面で、datasource, site, project nameが間違っていた場合
  • tableau側でprojectとdatasourceの権限設定により発生する場合
私の場合は、hostとsiteの設定が正しくなくてエラーが出まくりました。。

補足

tableauはタイムスタンプ型でないと時間データとして扱うことができません。そこで、CASTでタイムスタンプ型に変換します。

例:時間文字列(例:2019-10-17 08:21:36)をCASTでタイムスタンプ型に変換するクエリ

SELECT 
  CAST(
    time AS TIMESTAMP
  ) AS "time"
FROM
  log LIMIT 1


参考サイト



2017年2月14日火曜日

【トレジャーデータ:Presto】各ユーザの曜日別アクセス率を集計してライフスタイルに合ったアプローチをする

ユーザ一人ひとりのライフスタイルに合ったアプローチをしたいと考えたとき、まずは、各ユーザの曜日別のアクセス率を把握することが有効。各ユーザの曜日別アクセス率が分かれば、一人ひとりのユーザに適切なタイミングでコンテンツを提供できる可能性を高めることができる。

◇各ユーザの曜日別アクセス率の集計イメージ

user_id月火水木金土日
100010.5000000.5
10002000.80.2000
100030.10.10.10.20.10.10.3
100040000100


◇集計例(Presto)

WITH sq_data AS(
  SELECT
    DOW(
      --DOWで日付から曜日(1~7:月~日)を得る
      FROM_UNIXTIME(TD_TIME_PARSE(TD_TIME_FORMAT(time,
            'yyyy-MM-dd',
            'jst')))
    ) AS weekly,
    user_id,
    CAST(--後で比率を計算するため浮動小数点型に変換する
      COUNT(0) AS DOUBLE
    ) AS pv
  FROM
    access_log
  WHERE
    AND TD_TIME_RANGE(time,
      '2017-01-01',
      '2017-02-01',
      'jst')
  GROUP BY
    DOW(
      FROM_UNIXTIME(TD_TIME_PARSE(TD_TIME_FORMAT(time,
            'yyyy-MM-dd',
            'jst')))
    ),
    user_id
  ORDER BY
    weekly,
    user_id
),
sq_week_pv AS(
  SELECT
    user_id,
    COALESCE(
      --nullの場合は0とする
      SUM(CASE
          WHEN weekly = 1 THEN pv END),
      0
    ) AS Mon,
    COALESCE(
      SUM(CASE
          WHEN weekly = 2 THEN pv END),
      0
    ) AS Tue,
    COALESCE(
      SUM(CASE
          WHEN weekly = 3 THEN pv END),
      0
    ) AS Wed,
    COALESCE(
      SUM(CASE
          WHEN weekly = 4 THEN pv END),
      0
    ) AS Thurs,
    COALESCE(
      SUM(CASE
          WHEN weekly = 5 THEN pv END),
      0
    ) AS Fri,
    COALESCE(
      SUM(CASE
          WHEN weekly = 6 THEN pv END),
      0
    ) AS Sat,
    COALESCE(
      SUM(CASE
          WHEN weekly = 7 THEN pv END),
      0
    ) AS Sun,
    SUM(pv) AS pv
  FROM
    sq_data
  GROUP BY
    user_id
)
SELECT
  user_id,
  --比率の計算
  Mon / pv AS Mon,
  Tue / pv AS Tue,
  Wed / pv AS Wed,
  Thurs / pv AS Thurs,
  Fri / pv AS Fri,
  Sat / pv AS Sat,
  Sun / pv AS Sun
FROM
  sq_week_pv