Big Data Discoveryでは、次のQueryFunctionフィルタ・クラスが提供されています。フィルタは、現在の問合せ状態の変更に使用されます。
使用可能なフィルタ・クラスは次のとおりです。
ここに記載した情報以外のQueryFunctionフィルタ・クラスの詳細は、Component SDK APIリファレンスを参照してください。
フィルタリングを実行するためにEQLスニペットを使用します。DataSourceFilter絞込みは「選択した絞込み」パネルには追加されません。
使用可能なプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| filterString | フィルタ情報を含むEQLスニペット。
DataSourceFilterの場合、これは、EQL文のWHERE句のコンテンツになります。 EQL構文の詳細は、『EQLリファレンス』を参照してください。 |
たとえば、Napa Valley地域の40ドル未満の価格のレコードのみが表示されるようにデータをフィルタリングするには、次のようにします。
ExpressionBase expression = dataSource.parseLQLExpression("Region='Napa Valley' and P_Price<40");
DataSourceFilter dataSourceFilter = new DataSourceFilter(expression);
指定された属性値を持つレコードのみが含まれるようにデータをフィルタリングするために使用されます。RefinementFilter絞込みは「選択した絞込み」パネルに追加されます。
RefinementFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| attributeValue | String
絞込みに使用する属性値。 管理対象属性の場合、これは値固有です。 |
| attributeKey | String
属性キー。絞込みに使用する属性を識別します。 |
| sourceCollectionKey | String
データ・セットのキー。これは通常、default_edp....から始まる長いエンコード値です。 |
| multiSelect | AND |OR | NONE
複数選択属性の場合の、フィルタに同一の属性に対する複数の値が含まれる際の絞込み方法。 ANDに設定した場合は、一致するレコードに所定の値がすべて含まれる必要があります。 ORに設定した場合は、一致するレコードには所定の値のいずれか1つが含まれる必要があります。 NONEに設定した場合は、複数選択はサポートされません。絞込みには、最初の値のみが使用されます。 この設定は、データ・セットの属性に構成した絞込み動作と一致する必要があります。属性の絞込み動作の確認および構成のための「ビュー」ページの使用方法の詳細は、『データ検索および分析ガイド』を参照してください。 |
次の例では、Year属性に1999の値を持つレコードのみが含まれるようにデータが絞り込まれています。
RefinementFilter refinementFilter = new RefinementFilter("1999", "Year", "default_edp_cc7ea760-7c48-49e5-ae62-7856784afbf4_busgl0307_wls_ENTITIES_11930");
指定された属性値を持つレコードが除外されるようにデータをフィルタリングするために使用されます。NegativeRefinementFilter絞込みは「選択した絞込み」パネルに追加されます。
NegativeRefinementFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| attributeValue | String
絞込みに使用する属性値。 |
| attributeKey | String
属性キー。絞込みに使用する属性を識別します。 |
| attributeType | BOOLEAN | STRING | DOUBLE | LONG | GEOCODE | DATETIME | TIME | DURATION
絞込みに使用する値のタイプ。 デフォルトはSTRINGです。 属性が、文字列以外の標準の属性タイプである場合は、タイプを指定する必要があります。 |
| attributeValueName | String
オプション。絞込みの「選択した絞込み」パネルに表示する値。 attributeValueNameに値を指定しない場合は、「選択した絞込み」パネルにはattributeValueの値が表示されます。 選択した属性が、実際に保存されている値とは異なる値名を持つ管理対象属性である場合は、別の表示値を指定することもできます。 |
| ancestors | Stringリスト
オプション。「選択した絞込み」パネルに表示する祖先値の表示名。 管理対象属性値を値階層から選択する場合は、祖先値を指定することもできます。 |
| isAttributeSingleAssign | Boolean
trueに設定した場合、この属性は値を1つのみ持つことができます。 falseに設定した場合、この属性は複数値を取ります。 属性が複数値かどうかを確認するための「ビュー」ページの使用方法の詳細は、『データ検索および分析ガイド』を参照してください。 |
| sourceCollectionKey | String
データ・セットのキー。これは通常、default_edp....から始まる長いエンコード値です。 |
次の例では、Region属性にWashingtonという値を含まないレコードのみが含まれるようにデータが絞り込まれます。Regionは文字列属性のため、その他の構成は必要ありません。
NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("Region", "Washington");
次の例では、P_Year属性(単一割当て属性)に1997という値を持たないレコードのみが含まれるように、データが絞り込まれます。P_Yearは文字列属性でないため、属性タイプLONGが指定されます。
NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("P_Year", "1997", PropertyType.LONG, true, "default_edp_cc7ea760-7c48-49e5-ae62-7856784afbf4_busgl0307_wls_ENTITIES_11930");
次の例では、Outlet属性(単一割当て属性)の値としてCatererを持たないレコードのみが含まれるように、データが絞り込まれます。Outletの値はコードとして保存されるため、絞込みに使用する表示名を指定します。また、Outletは階層属性であるため、絞込みでは、CatererがカテゴリRetail SalesのNonstore Retailersのサブカテゴリであることを示しています。
List<String> ancestors = new ArrayList<String>();
ancestors.add("Retail Sales");
ancestors.add("Nonstore Retailers");
NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("Outlet", "454210", "Caterer", ancestors, true "default_edp_cc7ea760-7c48-49e5-ae62-7856784afbf4_busgl0307_wls_ENTITIES_11930");
指定された範囲内の属性値を持つレコードのみが含まれるようにデータをフィルタリングするために使用されます。RangeFilter絞込みは「選択した絞込み」パネルに追加されます。
RangeFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| attributeKey | String
属性キー。フィルタに使用する属性を識別します。 |
| rangeOperator | LT | LTEQ |GT |GTEQ| BTWN |GCLT |GCGT | GCBTWN
使用する比較タイプ。
|
| rangeType | DECIMAL | INTEGER | DATE | GEOCODE | TIME | DURATION
比較対象の値のタイプ。 |
| value1 | Numeric
比較に使用する値。 BTWNの場合、これは範囲の下限値になります。 ジオコード範囲演算子の場合、比較の原点になります。 |
| value2 | Numeric
BTWNの場合、これは範囲の上限値になります。 GCLTとGCGTの場合、これは比較に使用する値です。 GCBTWNの場合、これは範囲の下限値になります。 |
| value3 | Numeric
GCBTWN演算子にのみ使用されます。範囲の上限値。 |
次の例では、P_Scoreの値が80から100までの間の数値であるレコードのみが含まれるようにデータが絞り込まれます。
RangeFilter rangeFilter = new RangeFilter("P_Score", RangeType.INTEGER, RangeOperator.BTWN, "80", "100");
日付値のフィルタに使用されます。DateFilterを使用すると、日時値のサブセットでフィルタできます。たとえば、特定の年または特定の月のすべてのレコードを含む日付属性をフィルタできます。
DateFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| dateFilters | 適用する日付フィルタを表すDateFilterDimensionオブジェクトのリスト。
各DateFilterDimensionオブジェクトは次のもので構成されます。
このフィルタは、指定された最も具体的な日付部分までのみをフィルタします。 |
次の例では、SalesDateが2006年6月15日のレコードのみが含まれるように、データが絞り込まれます。このフィルタでは年、月および日付のみを指定します。SalesDateのレコードに異なる時間、分、秒の値が含まれていても、2006年6月15日であればこのフィルタに一致します。
DateFilterDimension dfd = new DateFilterDimension();
dfd.addDatePartFilter(DatePart.YEAR, 2006);
dfd.addDatePartFilter(DatePart.MONTH, 6);
dfd.addDatePartFilter(DatePart.DAY_OF_MONTH, 15);
DateFilter dateFilter = new DateFilter("SalesDate", dfd);
日付属性に最近のn年間、nか月間またはn日間である値を持つレコードを含む日付をフィルタするために使用されます。
LastNDateFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| attributeKey | 属性のキー名。 |
| ticksBack | 結果のレコードに含む年数、月数または日数。 |
| datePart | フィルタ処理に使用する日付部分。有効な値は、次のとおりです。
|
| sourceCollectionKey | String
データ・セットのキー。これは通常、default_edp....から始まる長いエンコード値です。 |
次の例では、SalesDateに過去3年間の値を持つレコードのみが含まれるように、データが絞り込まれます。
LastNDateFilter lastNDateFilter = new LastNDateFilter("SalesDate", 3, DatePart.YEAR);
ジオコード値が特定の場所から特定の距離内にある値を持つレコードを含むデータをフィルタするために使用されます。
GeoFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| attributeKey | ジオコード属性のキー名。 |
| rangeOperator | 比較演算子。 |
| value1 | 開始位置として使用するジオコード値。 |
| radius | 検索するマイル数またはキロ数。 |
| locationName | 開始位置として使用する場所の名前。 |
| unit | 比較の距離の単位(miまたはkm)。 |
指定された検索用語が見つかったレコードを含めるように、データをフィルタリングするために使用されます。SearchFilter絞込みは「選択した絞込み」パネルに追加されます。
SearchFilterのプロパティは次のとおりです。
| プロパティ | 説明 |
|---|---|
| searchInterface | String
使用する検索インタフェースの名前またはテキスト検索に有効な属性の名前のいずれか。 |
| terms | String
検索用語。 |
| matchMode | ALL | PARTIAL | ANY | ALLANY | ALLPARTIAL | PARTIALMAX | BOOLEAN
検索に使用する一致モード。 |
| enableSnippeting | Boolean
スニペットを有効化するかどうか。 オプション。指定しない場合は、デフォルトでfalseになります。 |
| snippetLength | Integer
スニペットに含める文字数。 enableSnippetingがtrueの場合に必須。 スニペットを有効化するには、enableSnippetingをtrueに設定し、snippetLengthに値を指定します。 |
次の例では、default検索インタフェースを使用して、Californiaおよびredという用語を検索します。一致するレコードは、すべての検索用語を含んでいる必要があります。スニペットがサポートされている場合は、100文字のスニペットが表示されます。
SearchFilter.Builder builder = new SearchFilter.Builder("default", "California red");
builder.matchMode(MatchMode.ALL);
builder.enableSnippeting(true);
builder.snippetLength(100);
SearchFilter searchFilter = builder.build();