±filter
Filtrowanie wejścia lub wyjścia wiersza danych
Opis
+filter Ogranicza odczyt wierszy danych z wejścia do pracy do tych, które spełniają warunek filtru.-filter Zabrania zapisywania danych wyjściowych z wiersza danych, który nie spełnia ograniczenia filtrowania.
Ograniczenia filtrowania są opisywane za pomocą jednego lub dwóch operandów i operatora pomiędzy nimi.
Każdy z operandów może być [polem] lub {wyrażeniem}.
Przed porównaniem każde wyrażenie i każda wartość pola zostanie rozwiązana dla każdego wiersza, patrz Expressions and their Resolving. Następnie porównanie jest przeprowadzane z rozwiązanymi wartościami.
Wzór
±filter={Operand}Operator{Operand}
Przykłady użycia
- +filter[3]
- Wczytuje ten wiersz danych tylko wtedy, gdy trzecia kolumna nie jest pusta.
- -filter[Status]!s{Locked}
- Wyprowadza ten wiersz danych tylko wtedy, gdy kolumna "Status" nie jest dokładnie równa "Locked".
- -filter[Owoc]!c{Apple/Pear}
- Ten wiersz danych jest wyświetlany tylko wtedy, gdy tekst w kolumnie "Owoc" nie zawiera ani "Jabłko" ani "Gruszka".
- -filter{NumericExpression1}ng{NumericExpression2}
- Ten wiersz danych jest wyświetlany tylko wtedy, gdy wyrażenie liczbowe1 jest większe niż wyrażenie liczbowe2.
"NumericExpression1" i "NumericExpression2" są rozwiązane.
Wszystkie warunki filtrowania
Testy na pustość
-filter[Pole] -filter[Pole]s |
łańcuch, [Pole] nie jest puste. |
-filter[Pole]! -filter[Pole]!s -filter[Pole]= ciąg znaków, [Pole] jest puste. |
string, [Pole] jest puste. |
-filter([Pole]) -filter([Pole])n |
numeryczny, [Pole] nie jest puste i nie jest równe 0. |
-filter([Pole])! -filter([Pole])!n -filter([Pole])= |
numeryczny, [Pole] jest puste lub równe 0. |
Testy literałów łańcuchowych (porównanie alfabetyczne)
-filter[Pole]e{wyrażenie} | łańcuch, [Pole] i {wyrażenie} są równe. |
-filter[Pole]!e[Inne pole] | string, {Pole] i [Inne pole] nie są równe. |
-filter[Pole]l{wyrażenie} | string, [Pole] jest alfabetycznie mniejsze od {wyrażenia}. |
-filter[Pole]!l[Inne pole] | string, nie mniejszy, tzn. [Pole] jest alfabetycznie większe/równe od [Innego pola]. |
-filter[Pole]g{wyrażenie} | string, [Pole] jest alfabetycznie większe niż {wyrażenie}. |
-filter[Pole]!g[Inne pole] | string, nie jest większy, tzn. [Pole] jest alfabetycznie mniejsze/równe od [Innego pola]. |
-filter[Pole]c{wyrażenie} | string, [Pole] zawiera {wyrażenie}. |
-filter Pole]!c{wyrażenie} string, [Pole] zawiera {wyrażenie}. | string, [Pole] nie zawiera {wyrażenia}. |
-filter Pole]b{wyrażenie} string, [Pole] zaczyna się od {wyrażenia}. | string, [Pole] zaczyna się od {wyrażenia}. |
-filter[Pole]!b{wyrażenie} | string, [Pole] nie zaczyna się od {wyrażenia}. |
-filter[Pole]f{wyrażenie} | string, [Pole] kończy się na {wyrażenie}. |
-filter[Pole]!f{wyrażenie} | string, [Pole] nie kończy się na {wyrażeniu}. |
Testy numeryczne (porównanie numeryczne)
-filter([Pole])n(7.3) -filter([Pole])=(7.3) |
Wartość [Pole] jest równa 7,3, zaokrąglona do maks. 27 miejsc po przecinku. |
-filter([Pole])!n({3}) -filter([Pole])!=({3}) |
Wartość pola nie jest równa 3. |
-filter([Pole])!([Inne pole]) -filter([Pole])!=([Inne pole]) |
Wartości [Pole] i [Inne pole] nie są równe. |
-filter([Pole])g([Inne pole]) -filter([Pole])>([Inne pole]) |
Wartość [Pole] jest większa niż wartość [Inne pole]. |
-filter([Pole])l([Inne pole]) -filter([Pole])<([Inne pole]) |
[Pole] jest mniejsze niż [Inne pole]. |
-filter([Pole])!g[([Inne pole]) -filter([Pole])<=([Inne pole]) |
[Pole] nie jest większe, tzn. mniejsze/równe niż [InnePole]. |
-filter([Pole])!l([Inne pole]) -filter([Pole])>=([Inne pole]) |
[Pole] nie jest mniejsze, tj. większe/równe niż [InnePole]. |
-filter([Pole])gl([Pole1])/([Pole2]) -filter([Pole])<>([Pole1])/([Pole2]) |
[Pole] jest większe niż [Pole1] i mniejsze niż [Pole2]. |
-filter([Pole])egl([Pole1])/([Pole2]) -filter([Pole])<=>([Pole1])/([Pole2]) |
[Pole] jest równe lub większe niż [Pole1] i równe lub mniejsze niż [Pole2]. |
-filter([Pole])lg([Pole1])/([Pole2]) -filter([Pole])><([Pole1])/([Pole2]) |
[Pole] jest albo mniejsze niż [Pole1], albo większe niż [Pole2]. |
-filter([Pole])elg([Pole1])/([Pole2]) -filter([Pole])>=<([Pole1])/([Pole2]) |
[Pole] jest albo równe lub mniejsze od [Pole1], albo równe lub większe od [Pole2]. |
Jeżeli numeryczne [Pole] ma inny format, należy zastosować dodatkową podpowiedź dotyczącą formatowania odczytu ([Pole]).
Należy użyć np. "([Pole],)", jeżeli [Pole] ma przecinek dziesiętny, podczas gdy lokalny standard to przecinek dziesiętny. Patrz również Numeric Fields.
Testy String regex (regularne dopasowanie)
-filter[Pole]r/wyrażenie/ | dopasowanie regex, [Pole] pasuje do {wyrażenia}. |
-filter/#[Pole]r#wyrażenie# | dopasowanie regex, [Pole] dopasowuje {wyrażenie} (z separatorem #). |
-filter[Pole]!r/wyrażenie/ | brak dopasowania regex, [Pole] nie pasuje do {wyrażenia}. |
-filter/#[Pole]!r#wyrażenie# | brak dopasowania regex, [Pole] nie pasuje do {wyrażenia} (z separatorem #). |
Dla łańcuchów tryb "i" ustawia warunki na niewrażliwe na wielkość liter.
-filter[Pole]s{wyrażenie} | [Pole] i {wyrażenie} są równe. |
-filter/i[Pole]s{wyrażenie} | [Pole] i {wyrażenie} są równe, porównanie nie uwzględnia wielkości liter. |
-filter[Pole]!s[Inne pole] | [Pole] i [Inne pole] nie są równe. |
-filter/i[Pole]!s[Inne pole] | [Pole] i [Inne pole] nie są równe, nie rozróżnia się wielkości liter. |
Przy dzieleniu prawego operandu za pomocą separatora, po prawej stronie można podać wiele możliwości wyboru
-filter[Pole]s{abc} | [Pole] jest porównywane z "abc". |
-filter Pole]s{abc/abd/xyz} [Pole] jest porównywane z "abc". | [Pole] jest porównywane z "abc", "abd" i "xyz". |
-filter/#[Pole]s{abc#abd#xyz} [Pole] jest porównywane z "abc", "abd" i "xyz". | [Pole] jest porównywane z "abc", "abd" i "xyz", z użyciem separatora "#". |
-filter/:[Pole]s{abc:abd:xyz} | [Pole] jest porównywane z "abc", "abd" i "xyz", przy użyciu separatora ":". |
-filter/#[Pole]s{wyrażenie}#[abd]#[XYZ] | [Pole] porównuje się z {wyrażeniem} oraz z polami [abd] i [XYZ], stosując separator "#". |
-filter/i#[Pole]s{wyrażenie}#[abd]#[XYZ] | [Pole] jest porównywane z {wyrażeniem}, oraz z polami [abd] i [XYZ]; porównanie nie uwzględnia wielkości liter i używa separatora "#". |
Wiele pozytywnych wyborów jest OR-owane, wiele negatywnych wyborów jest AND-owane:
-filter[Pole]c{abc/def/ghi} | [Pole] zawiera "abc" lub "def" lub "ghi". |
-filter Pole]!c{abc/def/ghi} [Pole] zawiera "abc" lub "def" lub "ghi". | [Pole] nie zawiera "abc", ani "def", ani "ghi".
(tzn. ani "abc", ani "def", ani "ghi"). |
Filtry można łączyć, tzn. do wyjścia (lub wejścia) można zastosować więcej niż jeden filtr. W tym przypadku wszystkie filtry muszą być dopasowane, aby umożliwić wejście lub wyjście wiersza danych.