Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sv translation
languageja


Note

このチュートリアルに進む前に、フィルター機能を十分参照してください。

[フィルター]ダイアログでビューのフィルターを設定できます。

インジケータ数式にフィルターを直接追加する方が便利な場合があります。これは次の場合に実行できます:

  • 他のデータセットからのデータを相互参照している場合
  • ユーザーにフィルターを変更させたくない場合

属性のフィルタリング

フィルター機能は、in/not in、ilike、like/not Likeなど、PostgreSQLがサポートするほとんどの演算子をサポートします。「ilike」は「like」に似ていますが、一致するパターンに対して大文字と小文字は区別されません。

  • 演算子を使用したフィルターin/not In

次の例では、データをフィルター処理して、City属性にParisBerlinLondonのみを含めます。結果は、これら3都市の訪問の集計を返します。

Code Block
filter("L_CITY in ('Paris','Berlin','London')") {
    return M_VISITS;
}


Note

例にあるアポストロフィーの正しい使用法に注意してください。

  • 一般的な式

パターン

説明

_

任意の一文字を表します。

%

0個以上の文字列を表します。

*

以前のアイテムの0回以上の繰り返しを表示します。

+

以前のアイテムの1回以上の繰り返しを表示します。

?

以前のアイテムが0回または1回繰り返されることを示します。

|

交互を示します(2つの選択肢のいずれか)


Code Block
Some examples for regular expressions:
'abc' LIKE 'abc'    true
'abc' LIKE 'a%'     true
'abc' LIKE '_b_'    true
'abc' LIKE 'c'      false

インジケータのフィルタリング

次の例では、訪問のインジケータの値が3を超えるレコードの数をカウントします。

Code Block
count = 0
filter('M_VISITS > 3') { 
    count++; 
} 

return count;


Note

ビューに表示される集計値ではなく、すべてのレコードにフィルターが適用されることに注意してください。

日付のフィルタリング

日付をフィルタリングする場合、許可される形式は「yyyy-MM-dd」のみです。次の例は、2014年9月12日に試験を受けた学生の数を返します。

Code Block
filter("L_DATE in ('2014-09-12')") {L_STUDENT_COUNT}

 


月全体や年全体をフィルタリングするには、フィルター内にdate-part関数を配置します。次の例では、2014年9月に試験を受けた生徒の数を返します。

Code Block
filter("date_part('month', L_DATE) = 9 AND date_part('year', L_DATE) = 2014") {L_STUDENT_COUNT}

時間のフィルタリング

時間をフィルタリングする場合、許可される形式は「HH:mm:ss」のみです。次の例では、10:00に到着した患者の数を返します。

Code Block
filter("L_TIME in ('10:00:00')") {L_PATIENT_COUNT}


全体の時間、分、秒をフィルタリングするために、date_part関数をフィルター機能に配置できます。次の例では、10:00から10:59の間に到着した患者の数を返します。

Code Block
filter("date_part('hour', L_TIME) =10") {L_PATIENT_COUNT}

複数のフィルター

次の例では、数学科目から例外的な結果が得られた生徒数を返します。

Code Block
filter("(L_PASS_RESULT in ('Exceptional')) AND (L_PASS_SUBJECT in ('Math'))"){
  L_STUDENT_COUNT
}


Info

複数のフィルター条件をANDまたはORで結合できます。

代替コード

Note

この機能は、BellaDati 2.9.2以降で利用可能です。

数式のフィルターを様々な方法で作成することができます。最初の例は上記の例で言及されています。 2つ目は、よりプログラム的なアプローチを使用します。いくつかの手順で、フィルターが作成されてから構築されます。

Code Block
def f = createFilter()
f = andFilter(f, 'L_ATTRIBUTE', 'OperationType', 'value1')
filter(buildFilter(f)) {
  ...
}

andFilter()関数は、フィルターに別の条件を追加するために使用されます。複数のandFilter()関数を使用して、複数の条件を追加することができます。

次の演算子を使用できます:

演算子説明
EQ

2つの値が等しいかどうかを評価します。

NEQ

2つの値が等しくないかどうかを評価します。

GT最初の値が2番目の値より大きいかどうかを評価します。
GTE

最初の値が2番目の値以上かどうかを評価します。

LT最初の値が2番目の値より小さいかどうかを評価します。
LTE

最初の値が2番目の値以下かどうかを評価します。

IN最初の値がリストの値のいずれかに等しいかどうかを評価します。

NOT_IN

最初の値がリストのいずれの値とも等しくないかどうかを評価します。
NOT_NULL最初の値がNULLかどうかを評価します。
NULL最初の値がNULLでないかどうかを評価します。

For operations NULL and NOT NULL, the second value is empty.

NULLおよびNOT NULL演算子の場合、2番目の値は空です。

Code Block
def f = createFilter()
f = andFilter(f, 'L_ATTRIBUTE', 'NULL','')
filter(buildFilter(f)) {
  ...
}
 


INおよびNOT_IN演算子では、比較のために複数の値を定義できます。

Code Block
def f = createFilter()
f = andFilter(f, 'L_ATTRIBUTE', 'IN', 'value1', 'value2')
filter(buildFilter(f)) {
  ...
}

GeoJSON値のフィルタリング

Note

この機能は、BellaDati 2.9.2以降で利用可能です。

特定のGEOポイントがGeoJSONで定義されたエリア内にあるかどうかを評価するために、フィルターを使用することもできます。この機能を使用するには、PostGISをサーバーにインストールする必要があります。管理者は、Database summaryページを開いて、PostGISがインストールされているかどうかを確認できます。

Code Block
String f = filterGeoJSONContains('L_GEOJSON', '134.256028,-24.162618')
filter(f) { 
 L_NAME_COUNT
}

このフィルターを使用して、GEOポイントが存在する郡または州の名前を取得する、別のオプションがあります。

Code Block
String f = filterGeoJSONContains('L_JSON', '134.256028,-24.162618')
filter(f) { 
  crossValue('GEOJSON', 'L_NAME_FIRSTVALUE')  
}

次に

...