# スケジュールされたクエリのSQL例

スケジュールされたクエリのほとんどの設定は、いつでも更新または再設定できます。これには、cronスケジュール、遅延、名前、クエリ文字列などが含まれます。また、「次のスケジュール実行時刻」は、ブラウザのタイムゾーンでの現在時刻、cronスケジュール、および遅延設定に基づいて自動的に更新される推定設定です。

スケジュールされたクエリが更新されると、更新された設定は次のスケジュール実行に即座に適用され、「次のスケジュール実行時刻 + 遅延」で実行されます（遅延が>0、<0、または0の場合）。

## 日次KPIの例

一般的なパターンは、特定の間隔で固定KPIまたはメトリクスを定期的に計算することです。


```sql
SELECT
  TD_TIME_FORMAT(TIME, "yyyy-MM-dd") AS day,
  COUNT(1) AS cnt
FROM
  www_access
GROUP BY
  TD_TIME_FORMAT(TIME, "yyyy-MM-dd"),
WHERE
  TD_TIME_RANGE(time,
  TD_TIME_ADD(TD_SCHEDULED_TIME(), '-1d'),
  TD_SCHEDULED_TIME())
```

次のパラメータを設定することで、クエリを毎日実行するようにスケジュールできます。

* Recurring?: @daily
* Delay (seconds): 3600


この例では、アクセスログから日次ページビューを集計します。集計の適切な時間範囲を設定するために、Trino（またはHive）の一般的なUDFをいくつか使用しています。TD_SCHEDULED_TIME()は、ジョブが実行される予定の時刻を返します。この場合、TD_SCHEDULED_TIME()は午前12時を返します。

遅延パラメータを1時間（3600秒）に設定することで、ジョブは毎日午前1時に起動します。これにより、ジョブが実行される前にデータをインポートするための追加時間（この場合は1時間）が確保されます。

KPIを追跡するために選択したエンドシステムに結果を書き込むには、[Treasure コンソールでクエリを作成または編集する](/ja/products/customer-data-platform/data-workbench/queries/creating-or-editing-a-query)を参照してください。

## 日次アクティブユーザーリストの例

結果を定期的にTreasure Dataテーブルにエクスポートすることは一般的です。これは、他のジョブで使用できます。


```sql
SELECT
  user_id
FROM
  www_access
GROUP BY
  user_id
WHERE
  TD_TIME_RANGE(time,
  TD_TIME_ADD(TD_SCHEDULED_TIME(), '-1d'),
  TD_SCHEDULED_TIME())
```

次のパラメータを設定することで、クエリを毎日実行するようにスケジュールできます。

* Recurring?: @daily
* Delay (seconds): 3600


この例では、アクセスログから日次アクティブユーザーのリストを集計します。

次のパラメータを設定することで、[このリストを別のTreasure Dataテーブルに書き込む](https://docs.treasuredata.com/smart/project-integrations/treasure-data-data-exchange-export-integration)ことができます。

* Export Result To: Treasure Data
* Database: YOUR_DATABASE
* Table: YOUR_TABLE
* Mode: Replace


別のテーブルへの結果の書き込みは[アトミック](/products/glossary)であるため、いつでも他のクエリからこのテーブルを参照できます。

## データマート生成の例

ログからデータを定期的に要約し、結果をRDBMSにプッシュしてデータマートを構築することは一般的です。


```sql
SELECT
  user, code, method, path, agent, host, avg(size)
FROM
  www_access
GROUP BY
  user, code, method, path, agent, host
WHERE
  TD_TIME_RANGE(time,
  TD_TIME_ADD(TD_SCHEDULED_TIME(), '-1h'),
  TD_SCHEDULED_TIME())
```

このジョブをスケジュールするには、次のパラメータを設定します。

* Recurring?: @hourly
* Delay (seconds): 600


前の例では、アクセスログからユーザー、コード、パス、エージェント、ホスト、および平均サイズごとにWeb要求の結果を1時間ごとに集計します。

結果を別のRDBMSに書き込む方法については、[TD Data Exchangeの使用](https://docs.treasuredata.com/smart/project-integrations/treasure-data-data-exchange-export-integration)を参照してください。

クエリ結果を外部RDBMSにプッシュした後、選択したBIツールを使用して結果をスライスおよびダイスできます。