この方法を推奨します。
td queryコマンドの-r/—resultオプションを使用してTableauの結果出力先を追加します。
認証モード: Username/Password
$ td query -d mydb -r '{"type":"tableau","host":"my.tableauserver.com", "auth_method":"password", "username":"my_user", "password":"passw0rd", "ssl":true, "ssl_verify":false, "server_version":"10.0", "datasource":"my_ds", "site":"","project":"", "mode":"replace", "chunk_size_in_mb":50, "timezone":"PST"}' 'SELECT * FROM access'認証モード: PAT
$ td query -d mydb -r '{"type":"tableau","host":"my.tableauserver.com", "auth_method":"pat", "pat_name":"pat_name", "pat_secret":"pat_secret", "ssl":true, "ssl_verify":false, "server_version":"10.0", "datasource":"my_ds", "site":"","project":"", "mode":"replace", "chunk_size_in_mb":50, "timezone":"PST"}' 'SELECT * FROM access'各パラメータの説明:
| Parameter | Description |
|---|---|
| auth_method | 認証方法。サポートされる値: 'password', 'pat' |
| username | Tableau ServerのUsername(auth_methodがpasswordの場合に必須) |
| password | Tableau ServerのPassword(auth_methodがpasswordの場合に必須) |
| pat_name | Personal Access Token Name(auth_methodがpatの場合に必須) |
| pat_secret | Personal Access Token Secret(auth_methodがpatの場合に必須) |
| host | Tableau ServerのHostname |
datasource | サインインするサイトのURL(オプション)
Tableau ServerのREST APIリファレンスをご覧ください。 |
| chunk_size_in_mb | 毎回アップロードするチャンクファイルサイズ(MB単位)、デフォルト: 200、最小: 100、最大: 1024 |
| read_timeout_millis | レスポンスを待機する時間(最大: 7200000)。ミリ秒単位の値 |
| error_when_timeout | TrueまたはFalse。trueの場合、データソース公開のタイムアウト時に実行中のジョブが失敗します |
| timezone | TimestampデータタイプからTableau DateTimeデータタイプへの変換に使用するTimezone、デフォルト: UTC |
この方法は推奨されません。
以下の例に示すように、Tableauの結果出力先をJSON形式からURL形式に変更します。
$ td query -d mydb -r 'tableau://username:password@my.tableauserver.com/?mode=replace' 'SELECT * FROM access'
$ td query -d mydb -r 'tableau://username:password@my.tableauserver.com:8443/?mode=replace&ssl=true' 'SELECT * FROM access'- TD Consoleを開きます。
- クエリエディタに移動します。
- クエリを入力します。
以下のクエリ例では、アクセスログのサンプルデータセットを使用し、1日ごとのHTTPメソッドの分布を計算します。便宜上、DatetimeカラムをString型からTIMESTAMP型にキャストしてTableauで使用します。
HIVE:
SELECT
CAST(TD_TIME_FORMAT(time, "yyyy-MM-dd 00:00:00") AS TIMESTAMP) AS "dates",
method AS `Method`,
COUNT(1) AS `Count`
FROM
www_access
GROUP BY
TD_TIME_FORMAT(time, "yyyy-MM-dd 00:00:00"),
methodPRESTO:
PRESToクエリでは、便宜上TD_TIME_STRINGの代わりにTD_TIME_FORMATを使用することを推奨します。
SELECT
CAST(TD_TIME_FORMAT(time, 'yyyy-MM-dd 00:00:00') AS TIMESTAMP) AS "dates",
method AS `Method`,
COUNT(1) AS `Count`
FROM
www_access
GROUP BY
TD_TIME_FORMAT(time, 'yyyy-MM-dd 00:00:00'),
methodTableau Serverを開きます。
左上のバーでData Sourcesを選択します。 TDEファイルを含むデータソースのリストが表示されます。

New Workbookを選択して、ブラウザからチャートとダッシュボードを作成します。
左側のナビゲーションからディメンションとメジャーを右上のナビゲーションにドラッグアンドドロップしてグラフを作成します。
Saveを選択して結果を保存します。

スケジュールジョブ機能を使用してデータセットを更新できます。この機能により、Treasure Dataでクエリを定期的に実行し、Tableau Server上のTDEファイルを更新できます。スケジュールはクエリエディタから指定できます。TD_SCHEDULED_TIME() UDFをappendモードで使用すると便利です。
以下のクエリは、クエリ実行時から過去24時間以内のレコード数を計算します。このスケジュールクエリを継続的に実行することで、毎日データセット全体を処理することを回避できます。
HIVE:
SELECT
CAST(
TD_TIME_FORMAT(time,
"yyyy-MM-dd 00:00:00") AS TIMESTAMP
) AS `Datetime`,
method AS `Method`,
COUNT(1) AS `Count`
FROM
www_access
WHERE
TD_TIME_RANGE(time,
TD_TIME_ADD(TD_SCHEDULED_TIME(),
'-1d'),
TD_SCHEDULED_TIME())
GROUP BY
TD_TIME_FORMAT(time,
"yyyy-MM-dd 00:00:00"),
methodPRESTO:
PRESToクエリでは、便宜上TD_TIME_STRINGの代わりにTD_TIME_FORMATを使用してください。
SELECT
CAST(
TD_TIME_FORMAT(time,
'yyyy-MM-dd 00:00:00') AS TIMESTAMP
) AS "dates",
method AS `Method`,
COUNT(1) AS `Count`
FROM
www_access
GROUP BY
TD_TIME_FORMAT(time,
'yyyy-MM-dd 00:00:00'),
methodTableau Serverへの結果出力は、様々なオプションをサポートしています。オプションは、CLIまたはREST API、サポートされている場合はConsoleでURLパラメータとして指定できます。オプションは通常、互いに互換性があり、組み合わせることができます。該当する場合、デフォルトの動作が示されています。
sslオプションは、Tableauサーバーへの接続にSSLを使用するかどうかを決定します。'true'の場合、SSLが使用されます。このオプションが指定されていない場合、デフォルトはssl=trueです。
tableau://username:password@my.tableauserver.com/?ssl=true
tableau://username:password@my.tableauserver.com:443/?ssl=truessl_verifyオプションは、SSL通信の証明書検証を要求するかどうかを決定します。'true'の場合、証明書検証が必要です。このオプションが指定されていない場合、デフォルトはssl_verify=trueです。
tableau://username:password@my.tableauserver.com/?ssl=true&ssl_verify=true証明書検証の無効化は、TableauサーバーのSSL証明書が自己署名の場合に特に有用です。
timestamp値はタイムゾーンに依存しません。例えば、1548979200などです。Tableau DateTimeには日、時、分などが含まれます。timestamp値からTableau DateTimeに変換するには、コネクタはターゲットタイムゾーンを知る必要があります。クエリにTIMESTAMPカラムが含まれている場合、またはDateTimeカラムをTIMESTAMPにキャストする場合、値はDateTimeとしてTableauサーバーにエクスポートされます。つまり、変換が行われるため、ターゲットタイムゾーンを指定する必要があります。
Treasure DataはDateTime値をUTCタイムゾーンを使用して保存します。ほとんどの場合、特に値を別のタイムゾーンに変換したい場合を除き、Treasure Dataからの値を保持するためにtimezoneをデフォルト(UTC)として設定したままにしてください。
デフォルトのUTC以外のタイムゾーンを設定する例:
CLIから:
$ td query "..." -r '{ "type": "tableau", ..., "timezone": "America/Los_Angeles" }'TD Workflowの一部として:
host: "tableau.company.com"
ssl: true
ssl_verify: false
username: "my_user"
password: "passw0rd"
datasource: "my_ds"
site: "MarketingTeam"
project: "Default"
server_version: "2018.1"
timezone: "America/Los_Angeles"