# Tableau Server Export Integration CLI ## ワンタイムクエリのCLI使用方法 ### JSON形式の設定 この方法を推奨します。 1. `td query`コマンドの`-r` / `—result`オプションを使用してTableauの結果出力先を追加します。 認証モード: Username/Password ```bash $ 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 ```bash $ 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(オプション) `site`属性の値を確認するには、Tableau Serverにサインインし、URLの`/site/`の後に表示される値を確認してください。例えば、以下のURLの場合、`site`値は`MarketingTeam`です。 `https://MyServer/#/site/MarketingTeam/projects` `site`属性が空文字列の場合、デフォルトサイトにサインインされます。サインイン時にサイトを指定しない場合でも、常に特定のサイトにサインインされます。 Tableau Serverの[REST APIリファレンス](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_ref.htm#Sign_In?TocPath=API%2520Reference%7C_____89)をご覧ください。 | | chunk_size_in_mb | 毎回アップロードするチャンクファイルサイズ(MB単位)、デフォルト: 200、最小: 100、最大: 1024 | | read_timeout_millis | レスポンスを待機する時間(最大: 7200000)。ミリ秒単位の値 | | error_when_timeout | TrueまたはFalse。trueの場合、データソース公開のタイムアウト時に実行中のジョブが失敗します | | timezone | TimestampデータタイプからTableau DateTimeデータタイプへの変換に使用するTimezone、デフォルト: `UTC` | ### URL形式の設定 この方法は推奨されません。 以下の例に示すように、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. TD Consoleを開きます。 2. クエリエディタに移動します。 3. クエリを入力します。 以下のクエリ例では、アクセスログのサンプルデータセットを使用し、1日ごとのHTTPメソッドの分布を計算します。便宜上、DatetimeカラムをString型からTIMESTAMP型にキャストしてTableauで使用します。 HIVE: ```sql 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"), method ``` PRESTO: PRESToクエリでは、便宜上TD_TIME_STRINGの代わりにTD_TIME_FORMATを使用することを推奨します。 ```sql 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'), method ``` 1. Tableau Serverを開きます。 2. 左上のバーで**Data Sources**を選択します。 TDEファイルを含むデータソースのリストが表示されます。 ![](/assets/image-20191016-211351.4667974c17c9a7ad2b16ec3fa12ae3453e5576c4dfab1e36e504503afa74d386.94b6a600.png) 3. **New Workbook**を選択して、ブラウザからチャートとダッシュボードを作成します。 4. 左側のナビゲーションからディメンションとメジャーを右上のナビゲーションにドラッグアンドドロップしてグラフを作成します。 5. **Save**を選択して結果を保存します。 ![](/assets/image-20191016-211405.b7e75000b994c7c8d8934d01ccfa61923fde5012ba00c349524743454b4bc781.94b6a600.png) ## TD Consoleを使用したクエリ更新のスケジュール設定 スケジュールジョブ機能を使用してデータセットを更新できます。この機能により、Treasure Dataでクエリを定期的に実行し、Tableau Server上のTDEファイルを更新できます。スケジュールはクエリエディタから指定できます。TD_SCHEDULED_TIME() UDFを`append`モードで使用すると便利です。 以下のクエリは、クエリ実行時から過去24時間以内のレコード数を計算します。このスケジュールクエリを継続的に実行することで、毎日データセット全体を処理することを回避できます。 HIVE: ```sql 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"), method ``` PRESTO: PRESToクエリでは、便宜上TD_TIME_STRINGの代わりにTD_TIME_FORMATを使用してください。 ```sql 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'), method ``` ## オプション Tableau Serverへの結果出力は、様々なオプションをサポートしています。オプションは、CLIまたはREST API、サポートされている場合はConsoleでURLパラメータとして指定できます。オプションは通常、互いに互換性があり、組み合わせることができます。該当する場合、デフォルトの動作が示されています。 ### sslオプション **ssl**オプションは、Tableauサーバーへの接続にSSLを使用するかどうかを決定します。'true'の場合、SSLが使用されます。このオプションが指定されていない場合、デフォルトは`ssl=true`です。 ``` tableau://username:password@my.tableauserver.com/?ssl=true tableau://username:password@my.tableauserver.com:443/?ssl=true ``` ### ssl_verifyオプション **ssl_verify**オプションは、SSL通信の証明書検証を要求するかどうかを決定します。'true'の場合、証明書検証が必要です。このオプションが指定されていない場合、デフォルトは`ssl_verify=true`です。 ``` tableau://username:password@my.tableauserver.com/?ssl=true&ssl_verify=true ``` 証明書検証の無効化は、TableauサーバーのSSL証明書が**自己署名**の場合に特に有用です。 ### Timezone timestamp値はタイムゾーンに依存しません。例えば、`1548979200`などです。Tableau DateTimeには日、時、分などが含まれます。timestamp値からTableau DateTimeに変換するには、コネクタはターゲットタイムゾーンを知る必要があります。クエリに`TIMESTAMP`カラムが含まれている場合、またはDateTimeカラムを`TIMESTAMP`にキャストする場合、値はDateTimeとしてTableauサーバーにエクスポートされます。つまり、変換が行われるため、ターゲットタイムゾーンを指定する必要があります。 Treasure DataはDateTime値をUTCタイムゾーンを使用して保存します。ほとんどの場合、特に値を別のタイムゾーンに変換したい場合を除き、Treasure Dataからの値を保持するために`timezone`をデフォルト(UTC)として設定したままにしてください。 デフォルトのUTC以外のタイムゾーンを設定する例: CLIから: ```bash $ td query "..." -r '{ "type": "tableau", ..., "timezone": "America/Los_Angeles" }' ``` TD Workflowの一部として: ```yaml 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" ```