histogram
values — 入力値を返す 式。
パラメータ
number_of_bins — ヒストグラムのビン数の上限。関数はビン数を自動的に計算します。指定したビン数に達するよう試みますが、できない場合はそれより少ないビン数を使用します。
戻り値
例
sequenceMatch
同じ秒に発生したイベントは、数列内での順序が未定義になる場合があり、その結果に影響することがあります。
-
timestamp— 時刻データを含むと見なされるカラムです。一般的なデータ型はDateとDateTimeです。また、サポートされている UInt データ型も使用できます。 -
cond1,cond2— イベントチェーンを記述する条件です。データ型:UInt8。条件引数は最大 32 個まで渡せます。この関数は、これらの条件で記述されたイベントのみを対象にします。数列に条件で記述されていないデータが含まれている場合、関数はそれらをスキップします。
pattern— パターン文字列です。パターン構文 を参照してください。
- パターンに一致した場合は 1。
- パターンに一致しなかった場合は 0。
UInt8。
パターン構文
-
(?N)— 位置Nの条件引数に一致します。条件には[1, 32]の範囲で番号が振られます。たとえば、(?1)はcond1パラメータに渡された引数に一致します。 -
.*— 任意の数のイベントに一致します。パターンのこの要素に一致させるための条件引数は必要ありません。 -
(?t operator value)— 2 つのイベントの間隔を秒単位で指定します。たとえば、パターン(?1)(?t>1800)(?2)は、発生時刻の差が 1800 秒を超えるイベントに一致します。これらのイベントの間には、任意の数の任意のイベントを挟めます。>=、>、<、<=、==の演算子を使用できます。
t テーブル内のデータについて考えます。
sequenceCount
同じ秒に発生したイベントは、数列内で未定義の順序になる場合があり、結果に影響する可能性があります。
-
timestamp— 時刻データを含むと見なされるカラム。一般的なデータ型はDateとDateTimeです。また、サポートされている任意の UInt データ型も使用できます。 -
cond1,cond2— イベントチェーンを表す条件。データ型:UInt8。条件引数は最大 32 個まで指定できます。関数は、これらの条件で記述されたイベントだけを考慮します。数列にいずれの条件にも記述されていないデータが含まれている場合、関数はそれらをスキップします。
pattern— パターン文字列。パターン構文 を参照してください。
- 一致した、重複しないイベントチェーンの数。
UInt64.
例
t テーブル内のデータを考えます:
sequenceMatchEvents
同じ秒に発生したイベントは、数列内での順序が未定義となる場合があり、結果に影響することがあります。
-
timestamp— 時刻データを含むと見なされるカラム。一般的なデータ型はDateとDateTimeです。サポートされている任意の UInt データ型も使用できます。 -
cond1,cond2— イベントチェーンを記述する条件。データ型:UInt8。条件引数は最大 32 個まで渡せます。この関数は、これらの条件で記述されたイベントだけを対象にします。数列に条件で記述されていないデータが含まれている場合、関数はそれらをスキップします。
pattern— パターン文字列。パターン構文 を参照してください。
- イベントチェーン内で一致した条件引数 (?N) に対応するタイムスタンプの Array。配列内の位置は、パターン内の条件引数の位置に対応します。
t テーブルのデータを考えてみましょう:
windowFunnel
- この関数は、チェーン内の最初の条件を満たすデータを探し、イベントカウンターを 1 に設定します。これがスライディングウィンドウの開始時点です。
- チェーン内のイベントがウィンドウ内で順番どおりに発生した場合、カウンターは増加します。イベントの順序が途中で崩れた場合、カウンターは増加しません。
- データに完了度合いの異なる複数のイベントチェーンがある場合、この関数は最も長いチェーンの長さだけを出力します。
timestamp— タイムスタンプを含むカラム名。サポートされるデータ型: Date、DateTime、およびその他の符号なし整数型 (timestampはUInt64型をサポートしますが、その値は Int64 の最大値である 2^63 - 1 を超えることはできません) 。cond— イベントチェーンを表す条件またはデータ。UInt8。
window— スライディングウィンドウの長さ。最初の条件と最後の条件の間の時間間隔を表します。windowの単位はtimestamp自体に依存するため、可変です。これは式timestamp of cond1 <= timestamp of cond2 <= ... <= timestamp of condN <= timestamp of cond1 + windowによって定義されます。mode— オプションの引数です。1 つ以上のモードを設定できます。'strict_deduplication'— イベントの数列内で同じ条件が成立した場合、その繰り返しイベントによって以降の処理は中断されます。注意: 同じイベントに対して複数の条件が成立する場合、想定外の動作になることがあります。'strict_order'— 他のイベントの介在を許可しません。たとえばA->B->D->Cの場合、Dの時点でA->B->Cの検出を停止し、最大イベントレベルは 2 になります。'strict_increase'— タイムスタンプが厳密に増加するイベントにのみ条件を適用します。'strict_once'— 条件を複数回満たしていても、イベントチェーン内では各イベントを 1 回だけカウントします。'allow_reentry'— 厳密な順序に違反するイベントを無視します。たとえば A->A->B->C の場合、余分な A を無視して A->B->C を検出し、最大イベントレベルは 3 になります。
Integer。
例
オンラインストアで、ユーザーがスマートフォンを選んで 2 回購入するのに、一定の時間が十分かどうかを判定します。
次のイベントチェーンを設定します。
- ユーザーがストアのアカウントにログインした (
eventID = 1003) 。 - ユーザーがスマートフォンを検索した (
eventID = 1007, product = 'phone') 。 - ユーザーが注文した (
eventID = 1009) 。 - ユーザーが再度注文した (
eventID = 1010) 。
user_id がその一連の流れのどこまで到達したかを調べます。
Query
Response
allow_reentry モードがユーザーの再入場パターンと組み合わせてどのように機能するかを示します。
retention
UInt8 型の条件のセットを 1 個から 32 個まで受け取ります。
任意の条件を引数として指定できます (WHERE と同様です) 。
最初の条件を除き、各条件は先頭の条件との組み合わせで評価されます。2 番目の結果は 1 番目と 2 番目が true の場合に true になり、3 番目の結果は 1 番目と 3 番目が true の場合に true になり、以下同様です。
Syntax
cond—UInt8の結果 (1 または 0) を返す式。
- 1 — イベントが条件を満たしたことを示します。
- 0 — イベントが条件を満たさなかったことを示します。
UInt8。
例
サイトトラフィックを判定するために retention 関数を計算する例を見てみましょう。
1. 例を示すためのテーブルを作成します。
Query
Query
Response
retention 関数を使用して、ユーザーを一意のID uid ごとにグループ化します。
Query
Response
Query
Response
r1- 2020-01-01 (cond1条件) にサイトを訪れたユニーク訪問者数。r2- 2020-01-01 から 2020-01-02 までの特定の期間 (cond1およびcond2条件) にサイトを訪れたユニーク訪問者数。r3- 2020-01-01 と 2020-01-03 の特定の期間 (cond1およびcond3条件) にサイトを訪れたユニーク訪問者数。
uniqUpTo(N)(x)
N までの、引数の異なる値の数を計算します。異なる引数値の数が N を超える場合、この関数は N + 1 を返し、それ以外の場合は正確な値を計算します。
N が小さい場合、最大 10 程度まででの使用を推奨します。N の最大値は 100 です。
集約関数の状態では、この関数は 1 + N * 1 つの値のバイト数に相当するメモリを使用します。
文字列を扱う場合、この関数は 8 バイトの非暗号学的ハッシュを格納します。文字列に対する計算は近似になります。
たとえば、Web サイト上でユーザーが実行したすべての検索クエリを記録するテーブルがあるとします。テーブルの各行は 1 件の検索クエリを表し、ユーザー ID、検索クエリ、クエリのタイムスタンプのカラムがあります。uniqUpTo を使用すると、少なくとも 5 人のユニークユーザーを生み出したキーワードだけを表示するレポートを生成できます。
uniqUpTo(4)(UserID) は、各 SearchPhrase について一意な UserID の数を計算しますが、数えるのは最大 4 個までです。ある SearchPhrase に対して一意な UserID が 4 個を超える場合、この関数は 5 (4 + 1) を返します。次に、HAVING 句によって、一意な UserID の数が 5 未満の SearchPhrase は除外されます。これにより、少なくとも 5 人の異なるユーザーが使用した検索キーワードの一覧を取得できます。
sumMapFiltered
sumMapFiltered(keys_to_keep)(keys, values)
パラメータ
戻り値
- 2 つの配列からなるタプルを返します。1 つはソート順に並んだキー、もう 1 つは対応するキーごとに合計された値です。
Query
Query
Response
sumMapFilteredWithOverflow
sumMapFilteredWithOverflow(keys_to_keep)(keys, values)
パラメータ
戻り値
- 2 つの配列からなるタプルを返します。キーはソート順で、値は対応するキーごとに合計されます。
sum_map テーブルを作成し、いくつかのデータを挿入したあと、結果を比較するために sumMapFilteredWithOverflow、sumMapFiltered、および toTypeName 関数を使用します。作成したテーブルでは requests の型は UInt8 ですが、sumMapFiltered はオーバーフローを避けるために、合計後の値の型を UInt64 に昇格させます。一方、sumMapFilteredWithOverflow は型を UInt8 のまま保持します。この型は結果を格納するには十分な大きさではないため、つまりオーバーフローが発生します。
Query
Query
Query
Response
Response
sequenceNextNode
SET allow_experimental_funnel_functions = 1 を設定します。
構文
-
direction— 方向を指定するために使用します。- forward — 前方に進みます。
- backward — 後方に進みます。
-
base— 基準点を設定するために使用します。- head — 基準点を最初のイベントに設定します。
- tail — 基準点を最後のイベントに設定します。
- first_match — 基準点を最初に一致した
event1に設定します。 - last_match — 基準点を最後に一致した
event1に設定します。
timestamp— タイムスタンプを含むカラムの名前。サポートされるデータ型: Date、DateTime、およびその他の符号なし整数型。event_column— 戻り値として返される次のイベントの値を含むカラムの名前。サポートされるデータ型: String および Nullable(String)。base_condition— 基準点が満たす必要のある条件。event1,event2, … — イベントチェーンを記述する条件。UInt8。
event_column[next_index]— パターンに一致し、次の値が存在する場合。NULL- パターンに一致しない場合、または次の値が存在しない場合。
Query
Response
forward と head の動作
backward と tail の動作
forward と first_match の挙動
backward と last_match の動作
base_condition の動作