データの変換

ストリーミング式は、結果セットを変換するための強力な関数セットを提供します。ユーザーガイドのこのセクションでは、結果セットに適用される有用な変換の概要を示します。

フィールドの選択と追加

select関数は、別のストリーミング式をラップし、ストリーム内の各タプルに対して以下の操作を実行できます。

  • フィールドの**サブセットを選択**する

  • フィールドを新しい名前に**マッピング**する

  • 新しいフィールドを**計算**する

以下は、select関数がsearch関数をラップし、フィールドを新しいフィールド名にマッピングする例です。recNum関数は、タプルの現在のレコード番号を返すだけの数式です。select式は、任意の数式を呼び出して新しい値を計算できます。

select1

以下は、div関数を使用して、2つの既存のフィールドから新しいフィールドを計算する例です。

select math

タプルのフィルタリング

having関数は、ブールロジックに基づいてストリーム内のタプルをフィルタリングするために使用できます。

以下の例では、having関数はfacet関数の出力をフィルタリングして、`count(*)`が20404を超えるタプルのみを出力しています。

having

ページング

recNum関数で追加された**レコード番号**は、ページングをサポートするためにフィルタリングできます。

以下の例では、ネストされたlt関数とgt関数を持つand関数は、特定のレコード番号範囲内のレコードを選択するために使用されます。

search page

Nullの処理

notNull関数とisNull関数は、null値を異なる値に置き換えたり、null値を持つタプルを除外したりするために使用できます。

以下の例では、select関数内でisNull関数を使用して、null値を-1に置き換えています。if関数は3つのパラメータを取ります。1つ目はブール式で、この場合はisNullです。if関数は、ブール関数がtrueを返すと2番目のパラメータを返し、falseを返すと3番目のパラメータを返します。この場合、結果セットに含まれていないタプルのフィールドをチェックしているため、isNullは常にtrueです。

select2

notNullisNullは、having関数と組み合わせて、null値を持つタプルを除外することもできます。

以下の例では、結果セットにないフィールドに対してisNullを評価しているため、常にtrueが返され、すべてのドキュメントが出力されます。

having2

以下の例では、結果セットにないフィールドに対してnotNullを評価しているため、常にfalseが返され、ドキュメントは出力されません。

having3

正規表現の一致とフィルタリング

matches関数は、having関数内で使用して、レコード内のフィールドが特定の正規表現に一致するかどうかをテストできます。これにより、検索結果に対して高度な正規表現マッチングを行うことができます。

以下の例では、matches関数を使用して、complaint_type_sフィールドが**Commercial**で終わるすべてのレコードを返します。

search matches

ソート

sort関数とtop関数は、結果セットをメモリ内で並べ替えるために使用できます。sort関数は、ソート条件に基づいて結果セット全体をソートして返します。top関数は、ソート条件に基づいて結果セットの上位N個の値を返すために使用できます。

search resort

ロールアップ

rollup 関数と hashRollup 関数は、結果セットに対して集計を実行するために使用できます。これは、JSON ファセット API を使用して検索エンジンに集計をプッシュする facetfacet2D、および timeseries 集計関数とは異なります。

rollup 関数は、MapReduce スタイルのロールアップを実行します。これには、結果ストリームがグループ化フィールドでソートされている必要があります。これにより、非常に高いカーディナリティのフィールドに対する集計が可能になります。 hashRollup 関数は、すべてのバケットをインメモリハッシュマップに保持することでロールアップを実行します。これには、すべての個別のグループ化フィールドをメモリに格納するのに十分なメモリが必要ですが、基になるストリームがソートされている必要はありません。

以下の例は、nyc311 苦情データベースのランダムサンプルから上位 5 件の苦情の種類を視覚化したものです。 top 関数は、hashRollup によって出力された count(*) フィールドに基づいて上位 5 件の苦情の種類を選択するために使用されます。

hashRollup