萌えハッカーニュースリーダー

2025/05/11 18:30 EventQL: A Query Language for Events

出典: https://docs.eventsourcingdb.io/reference/eventql/
hakase
博士

EventQLとな? EventSourcingDBで使われるクエリ言語みたいじゃな。イベントデータを取得したり変換したりできるらしいぞ。

roboko
ロボ子

なるほど。EventSourcingDBのイベントデータを扱うための専用言語なのですね。SQLのようなものと理解して良いのでしょうか?

hakase
博士

まあ、似たようなもんじゃな。FROM句から始まって、WHEREとかORDER BYとか、おなじみの句が使えるみたいじゃ。PROJECT INTO句で終わるのが特徴的じゃな。

roboko
ロボ子

PROJECT INTO句、ですか。これはどういった役割を持つのでしょう?

hakase
博士

最終的な結果を定義するんじゃ。JSONライクな構文で構造体を作ったりできるみたいじゃぞ。例えば`PROJECT INTO { id: e.id, time: e.time }`みたいな感じで使うんじゃな。

roboko
ロボ子

なるほど、結果の形を自由に定義できるのですね。`events`、`subjects`、`eventtypes`といったソースからデータを取得できるとのことですが、`events`の`data`フィールドの中身にドット表記でアクセスできるのは便利ですね。

hakase
博士

`e.data.count`みたいに書けるんじゃな。存在しないフィールドは`null`を返すらしいぞ。これはありがたい設計じゃ。

roboko
ロボ子

確かに。エラーにならないのは扱いやすいですね。WHERE句の条件式で使える演算子も一般的なものばかりで分かりやすいです。

hakase
博士

比較演算子とか論理演算子とかじゃな。`array CONTAINS value`で配列に特定の値が含まれているかチェックできるのも便利じゃ。

roboko
ロボ子

ソートやグループ化、制限もできるのですね。`ORDER BY`、`GROUP BY`、`SKIP`、`TOP`といった句があるとのことです。

hakase
博士

`GROUP BY`は集計目的でのみ使うらしいぞ。集計関数と定数式しか使えないってことは、複雑な処理は別の場所でやる必要があるんじゃな。

roboko
ロボ子

型変換もサポートされているのですね。`AS`キーワードを使うとのことですが、日付や時刻の形式はRFC3339に準拠する必要があるのですね。

hakase
博士

そうじゃ。`STRING`, `INT`, `FLOAT64`, `BOOLEAN`, `DATE`, `TIME`, `DATETIME`が使えるみたいじゃな。間違った形式だとランタイムエラーになるから注意が必要じゃ。

roboko
ロボ子

組み込み関数も豊富ですね。数学関数、文字列関数、日付と時刻関数、条件関数などがあるとのことです。

hakase
博士

`LOWER(x)`とか`UPPER(x)`とか、おなじみの関数が揃ってるじゃな。`IF(condition, then, else)`もあるから、ちょっとした条件分岐もできるぞ。

roboko
ロボ子

集計関数も充実していますね。`COUNT()`, `SUM()`, `AVG()`など、基本的なものは揃っているようです。

hakase
博士

じゃな。`MEDIAN(x)`とか`STDDEV(x)`もあるから、統計的な分析もできるぞ。EventQL、なかなかやるじゃん。

roboko
ロボ子

EventSourcingDBを使う際には、ぜひ活用したいですね。ところで博士、EventQLを使って、博士の好きなスイーツの消費量を分析してみるのはどうでしょう?

hakase
博士

むむ、それは良い考えじゃ! …って、私の体重計が壊れる未来しか見えんぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search