Versions Compared

Key

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

...

Sv translation
languagede


Note

Es wird empfohlen, sich mit der Filterfunktion vertraut zu machen, bevor Sie mit diesem Tutorial fortfahren.

Im Dialogfeld Filter können Sie Filter für die Ansicht einrichten.

Manchmal ist es bequemer, den Filter direkt zur Indikatorformel hinzuzufügen. Du kannst dies tun, wenn:

  • Sie referenzieren Daten aus anderen Datensätzen.
  • Sie möchten nicht, dass Ihre Benutzer Filter ändern.
Filtering Attributes

Filtern von Attributen

Die Filterfunktion unterstützt die meisten von PostgreSQL unterstützten Operatoren wie in/not in, ilike, like/not Like, similar to/not similar to etc. "ilike" ist ähnlich wie "like", aber die Groß-/Kleinschreibung ist unempfindlich gegenüber dem übereinstimmenden Muster.

  • Filter using operatormit Operator: in/not In

Das folgende Beispiel filtert Daten so, dass sie nur Paris, Berlin und London in ihr City-Attribut aufnehmen. Das Ergebnis liefert eine Zusammenfassung der Besuche in diesen drei Städten.

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

Beachten Sie die korrekte Verwendung von Apostrophe im Beispiel.

  • Regelmäßige Ausdrücke

Pattern

Beschreibung

_

Steht für jedes einzelne Zeichen.

%

Steht für eine beliebige Folge von Null oder mehr Zeichen.

*

Bezeichnet die Wiederholung des vorherigen Elements null oder mehr Mal.

+

Denotes repetition of the previous item one or more times.

?

Bezeichnet die Wiederholung des vorherigen Elements Null oder einmalig.

|

Kennzeichnet eine Alternative (eine von zwei Alternativen).

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

Filterindikatoren

Das folgende Beispiel zählt die Anzahl der Datensätze, die den Wert des Indikators für Besuche größer als 3 haben.

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

return count;
Note

Beachten Sie, dass der Filter auf jeden Dataset angewendet wird und nicht auf seinen in der Ansicht angezeigten aggregierten Wert.

Datums-Filterung

Beim Filtern von Daten ist nur das Format'yyyyyyy-MM-dd' erlaubt. Das folgende Beispiel gibt die Anzahl der Studenten zurück, die am 12. September 2014 eine Prüfung abgelegt haben.

 

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

 

Um den ganzen Monat oder das ganze Jahr zu filtern, legen Sie die Datum-Teil-Funktion in den Filter. Nachfolgend die Anzahl der Studenten, die im September 2014 eine Prüfung abgelegt haben.

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

Zeitfilterung

Beim Filtern der Zeit ist nur das Format'HH:mm:ss' erlaubt. Das folgende Beispiel gibt die Anzahl der Patienten zurück, die um 10:00 Uhr angekommen sind.

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

Um ganze Stunden, Minuten oder Sekunden zu filtern, kann die date_part Funktion in die Filterfunktion integriert werden. Das folgende Beispiel gibt die Anzahl der Patienten zurück, die zwischen 10:00 und 10:59 Uhr angekommen sind.

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

Multiple

Filters

Filter

Folgendes Beispiel gibt die Anzahl der Schüler zurück, die außergewöhnliche Ergebnisse aus dem Fach Mathematik erzielt haben.

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

Sie können mehrere Filterbedingungen mit UND- oder ODER-Verknüpfung kombinieren.

Code-Alternativen

Note

Diese Funktion ist seit BellaDati 2.9.2 verfügbar.

Es ist möglich, Filter in Formeln auf verschiedene Arten zu schreiben. Die erste ist in den obigen Beispielen erwähnt. Der zweite verwendet einen programmatischeren Ansatz. In wenigen Schritten wird der Filter erstellt und dann gebaut.

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

Die Funktion andFilter() wird verwendet, um dem Filter eine weitere Bedingung hinzuzufügen. Es ist möglich, mehr als eine Bedingung hinzuzufügen, indem Sie mehrere andFilter() Funktionen verwenden.

Folgende Operationen sind verfügbar:

BetriebBeschreibung
EQwertet aus, ob zwei Werte gleich sind.
NEQwertet aus, ob zwei Werte ungleich sind.
GT

wertet aus, ob der erste Wert größer als der zweite Wert ist.

GTEwertet aus, ob der erste Wert größer als der zweite Wert oder gleich ist.
LT

wertet aus, ob der erste Wert kleiner als der zweite Wert ist.

LTEwertet aus, ob der erste Wert kleiner als der zweite Wert oder gleich ist.
INwertet aus, ob der erste Wert gleich einem der Werte aus der Liste ist.

NOT_IN

wertet aus, ob der erste Wert ungleich einem der Werte aus der Liste ist.
NOT_NULLwertet aus, ob der erste Wert NULL ist.
NULLwertet aus, ob der erste Wert nicht NULL ist.

Bei den Operationen NULL und NOT NULL ist der zweite Wert leer.

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

 

Für die Operationen IN und NOT_IN ist es möglich, mehr als einen Wert zum Vergleich zu definieren.

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

Filtern von GeoJSON-Werten

Note

Diese Funktion ist seit BellaDati 2.9.2 verfügbar.

Filter können auch verwendet werden, um zu beurteilen, ob sich ein bestimmter GEO-Punkt innerhalb eines von o GeoJSON definierten Bereichs befindet. Um diese Funktion nutzen zu können, muss PostGIS auf dem Server installiert sein. Administratoren können die Seite Datenbankübersicht öffnen, um zu sehen, ob PostGIS installiert ist oder nicht.

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

Eine weitere Möglichkeit besteht darin, diesen Filter zu verwenden, um den Namen eines Bezirks oder Staates abzurufen, in dem sich der GEO-Punkt befindet.

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

Nächste Schritte