コンテンツにスキップ
タイマー

タイマー

タイマーは、指定した時刻または一定の間隔で実行する処理を定義します。

新しいタイマーの追加

指定したスケジュールで実行する処理を登録します。タイマー管理のWeb UIは、 Since v8.0.20 から利用できます。

  1. 左側のメニューでアイコンをクリックします。

  2. 左上の+アイコンをクリックします。

  3. タイマーID(名前)、スケジュール(Timer spec)、実行するTQLのパスを入力します。

  1. 「Create」ボタンをクリックしてタイマーを作成します。

タイマーの開始・停止・削除

トグルボタンを押して開始し、を押して停止します。

タイマーのスケジュール仕様

使用できるスケジュール表現の例は以下のとおりです。

0 30 * * * *           毎時30分に実行
@every 1h30m           1時間30分ごとに実行
@daily                 毎日実行

CRON式

フィールド名必須かどうか使用できる値特殊文字
必須0-59* / , -
必須0-59* / , -
必須0-23* / , -
必須1-31* / , - ?
必須1-12またはJAN-DEC* / , -
曜日必須0-6またはSUN-SAT* / , - ?
  • アスタリスク *
    対応するフィールドのすべての値を表します。
    例:第5フィールド(月)に*を指定すると、毎月を表します。

  • スラッシュ /
    範囲内の間隔を表します。たとえば、第2フィールド(分)に3-59/15を指定すると、毎時3分から15分間隔で実行します。
    */...は、first-last/...と同じで、そのフィールドの全範囲を一定間隔で扱います。N/...N-MAX/...と同じで、Nから範囲の末尾までを指定間隔で扱い、先頭には戻りません。

  • カンマ ,
    複数の値を指定します。例:第6フィールド(曜日)にMON,WED,FRIを指定すると、月・水・金曜日に実行します。

  • ハイフン -
    範囲を指定します。例:9-17は、午前9時から午後5時まで、両端を含む毎時を表します。

  • 疑問符 ?
    日(day-of-month)または曜日(day-of-week)のフィールドを空にする場合、*の代わりに使用できます。

定義済みスケジュール

項目説明等価な式
@yearly (または@annually)毎年1月1日の午前0時に実行0 0 0 1 1 *
@monthly毎月1日の午前0時に実行0 0 0 1 * *
@weekly毎週日曜日の午前0時に実行0 0 0 * * 0
@daily (または@midnight)毎日午前0時に実行0 0 0 * * *
@hourly毎時0分に実行0 0 * * * *

間隔の指定

@every <duration>構文を使用します。durationは、300ms-1.5h2h45mのように符号、小数、単位を含められます。使用できる単位はmssmhです。

@every 10h
@every 1h10m30s

コマンドライン

タイマーの追加

構文: timer add [--autostart] <name> <timer_spec> <tql-path>

  • --autostart : machbase-neoの起動時に自動的に実行します。
    自動起動を使用しない場合は、timer start <name>timer stop <name>で手動操作します。
  • <name> : タイマー名
  • <timer_spec> : 実行スケジュール(前述のスケジュールを参照)
  • <tql-path> : 実行するTQLスクリプトのパス

タイマー一覧

構文: timer list

タイマーの開始・停止

構文: timer [start | stop] <name>

タイマーの削除

構文: timer del <name>

Hello Worldの例

タイマーの基本動作を確認します。

「Hello World」TQLの作成

TQLエディターを開き、以下のコードを入力してhelloworld.tqlとして保存します。

CSV(`helloworld,0,0`)
MAPVALUE(1, time('now'))
MAPVALUE(2, random())
INSERT("name", "time", "value", table("example"))

スクリプトを実行すると、EXAMPLEテーブルに1件のデータが挿入されます。
クエリで結果を確認してください。

select * from example where name = 'helloworld';
sys machbase-neo» select * from example where name = 'helloworld';
┌────────┬────────────┬─────────────────────────┬────────────────────┐
│ ROWNUM │ NAME       │ TIME(LOCAL)             │ VALUE              │
├────────┼────────────┼─────────────────────────┼────────────────────┤
│      1 │ helloworld │ 2024-06-19 18:20:07.001 │ 0.6132387755535856 │
└────────┴────────────┴─────────────────────────┴────────────────────┘
a row fetched.

タイマーの登録

Web UI(8.0.20で導入)の設定は、以下のシェルコマンドと同じ動作になります。

以下のコマンドと同じです。

timer add helloworld "@every 5s" helloworld.tql; 

「Auto Start」オプションを選択するか、ボタンを押してタイマーを開始します。
開始すると、5秒ごとに新しいレコードがテーブルに挿入されます。

タイマーの実行結果の確認

sys machbase-neo» select * from example where name = 'helloworld';
┌────────┬────────────┬─────────────────────────┬─────────────────────┐
│ ROWNUM │ NAME       │ TIME(LOCAL)             │ VALUE               │
├────────┼────────────┼─────────────────────────┼─────────────────────┤
│      1 │ helloworld │ 2024-07-03 09:49:47.002 │ 0.14047743934840562 │
│      2 │ helloworld │ 2024-07-03 09:49:42.002 │ 0.7656153597963373  │
│      3 │ helloworld │ 2024-07-03 09:49:37.002 │ 0.11713331640146182 │
│      4 │ helloworld │ 2024-07-03 09:49:32.002 │ 0.5351642943247759  │
│      5 │ helloworld │ 2024-07-03 09:49:27.001 │ 0.6588127185612987  │
└────────┴────────────┴─────────────────────────┴─────────────────────┘
5 rows fetched.

ダッシュボード

自動更新するダッシュボードを作成すると、タイマーが正常に動作しているかをリアルタイムに確認できます。

タイマーの管理

詳細ページで、変更・開始・停止・削除を行えます。

コマンドライン

timer listコマンドは、タイマーの状態を表示します。

sys machbase-neo» timer list;
┌────────────┬───────────┬────────────────┬───────────┬─────────┐
│ NAME       │ SPEC      │ TQL            │ AUTOSTART │ STATE   │
├────────────┼───────────┼────────────────┼───────────┼─────────┤
│ HELLOWORLD │ @every 5s │ helloworld.tql │ false     │ RUNNING │
└────────────┴───────────┴────────────────┴───────────┴─────────┘

コマンドラインからタイマーを開始・停止することもできます。

timer start helloworld;
timer stop helloworld;
最終更新日