0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

特徴量エンジンKaskadaの宣言型クエリ言語 Fenl~述語関数 ifとwhen

Posted at

はじめに

先日、以下の記事を発表しました。

新しいテクノロジーに触れる時はいつでも楽しいものです。
中でも新しいプログラミング言語(のパラダイム)を学ぶことは、特別に楽しいことです。

ということで、まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。

本稿情報のソースとして、下記ドキュメントを参照ください。

Fenlの述語関数:ifwhen

Fenl は 2 つの述語関数を提供します。

if

関数if(condition, value)は、conditiontrue の場合はvalueを返し、それ以外の場合はすべてnullを返します。
関数実行の結果は、標準の連続性ルールに従います。たとえば、 valueconditionが両方とも連続値であれば結果は連続値となり、それ以外の場合は結果は離散値になります。

when

関数when(condition, value)は、値が生成されるたびに valueの 値を返します。の結果は常に離散的であり 、一連の時間で値が生成され、値が生成されます。condition``true``when``condition``true

典型的な使われ方

これらの関数は、さまざまな方法で値をフィルタリングします。if は値を null に置き換えることによってフィルタリングするのに対し、when は値が生成される一連の時刻を制限することによって値をフィルタリングします。

Kaskada の計算エンジンはテーブル形式であるため、if のパフォーマンスが when のパフォーマンスよりも優れている場合があります。if は単純な変換規則として適用できますが、when では新しいテーブルを構築することになるからです。

別のケースとして、行数が非常に少ないテーブルに対して、後続のオペレーションに対する計算処理を適用できる場合には、'when'の性能が勝る可能性があります。

一般的なガイドラインとしては、値の置換には if を使用し、値のフィルター処理には when を使用します。

たとえば、ifelseを使用して、以下のように値をクリーンアップします。

Event.duration | if($input > 0) | else(0)

以下は、whenクエリによって返された行をフィルタリングする例です。

Event | when(Event.kind == "conversion")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?