RowFilter (Cloud Bigtable HBase Client for Java 0.9.3-SNAPSHOT API)

com.google.bigtable.v2

Class RowFilter

  • All Implemented Interfaces:
    RowFilterOrBuilder, Message, MessageLite, MessageLiteOrBuilder, MessageOrBuilder, Serializable


    public final class RowFilter
    extends GeneratedMessageV3
    implements RowFilterOrBuilder
     Takes a row as input and produces an alternate view of the row based on
     specified rules. For example, a RowFilter might trim down a row to include
     just the cells from columns matching a given regular expression, or might
     return all the cells of a row but not their values. More complicated filters
     can be composed out of these components to express requests such as, "within
     every column of a particular family, give just the two most recent cells
     which are older than timestamp X."
     There are two broad categories of RowFilters (true filters and transformers),
     as well as two ways to compose simple filters into more complex ones
     (chains and interleaves). They work as follows:
     * True filters alter the input row by excluding some of its cells wholesale
     from the output row. An example of a true filter is the `value_regex_filter`,
     which excludes cells whose values don't match the specified pattern. All
     regex true filters use RE2 syntax (https://github.com/google/re2/wiki/Syntax)
     in raw byte mode (RE2::Latin1), and are evaluated as full matches. An
     important point to keep in mind is that `RE2(.)` is equivalent by default to
     `RE2([^\n])`, meaning that it does not match newlines. When attempting to
     match an arbitrary byte, you should therefore use the escape sequence `\C`,
     which may need to be further escaped as `\\C` in your client language.
     * Transformers alter the input row by changing the values of some of its
     cells in the output, without excluding them completely. Currently, the only
     supported transformer is the `strip_value_transformer`, which replaces every
     cell's value with the empty string.
     * Chains and interleaves are described in more detail in the
     RowFilter.Chain and RowFilter.Interleave documentation.
     The total serialized size of a RowFilter message must not
     exceed 4096 bytes, and RowFilters may not be nested within each other
     (in Chains or Interleaves) to a depth of more than 20.
     
    Protobuf type google.bigtable.v2.RowFilter
    See Also:
    Serialized Form
    • Field Detail

      • INTERLEAVE_FIELD_NUMBER

        public static final int INTERLEAVE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • PASS_ALL_FILTER_FIELD_NUMBER

        public static final int PASS_ALL_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • BLOCK_ALL_FILTER_FIELD_NUMBER

        public static final int BLOCK_ALL_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • ROW_KEY_REGEX_FILTER_FIELD_NUMBER

        public static final int ROW_KEY_REGEX_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • ROW_SAMPLE_FILTER_FIELD_NUMBER

        public static final int ROW_SAMPLE_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • FAMILY_NAME_REGEX_FILTER_FIELD_NUMBER

        public static final int FAMILY_NAME_REGEX_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • COLUMN_QUALIFIER_REGEX_FILTER_FIELD_NUMBER

        public static final int COLUMN_QUALIFIER_REGEX_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • COLUMN_RANGE_FILTER_FIELD_NUMBER

        public static final int COLUMN_RANGE_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • TIMESTAMP_RANGE_FILTER_FIELD_NUMBER

        public static final int TIMESTAMP_RANGE_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • VALUE_REGEX_FILTER_FIELD_NUMBER

        public static final int VALUE_REGEX_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • VALUE_RANGE_FILTER_FIELD_NUMBER

        public static final int VALUE_RANGE_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CELLS_PER_ROW_OFFSET_FILTER_FIELD_NUMBER

        public static final int CELLS_PER_ROW_OFFSET_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CELLS_PER_ROW_LIMIT_FILTER_FIELD_NUMBER

        public static final int CELLS_PER_ROW_LIMIT_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CELLS_PER_COLUMN_LIMIT_FILTER_FIELD_NUMBER

        public static final int CELLS_PER_COLUMN_LIMIT_FILTER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • STRIP_VALUE_TRANSFORMER_FIELD_NUMBER

        public static final int STRIP_VALUE_TRANSFORMER_FIELD_NUMBER
        See Also:
        Constant Field Values
      • APPLY_LABEL_TRANSFORMER_FIELD_NUMBER

        public static final int APPLY_LABEL_TRANSFORMER_FIELD_NUMBER
        See Also:
        Constant Field Values
    • Method Detail

      • getChain

        public RowFilter.Chain getChain()
         Applies several RowFilters to the data in sequence, progressively
         narrowing the results.
         
        optional .google.bigtable.v2.RowFilter.Chain chain = 1;
        Specified by:
        getChain in interface RowFilterOrBuilder
      • getInterleave

        public RowFilter.Interleave getInterleave()
         Applies several RowFilters to the data in parallel and combines the
         results.
         
        optional .google.bigtable.v2.RowFilter.Interleave interleave = 2;
        Specified by:
        getInterleave in interface RowFilterOrBuilder
      • getCondition

        public RowFilter.Condition getCondition()
         Applies one of two possible RowFilters to the data based on the output of
         a predicate RowFilter.
         
        optional .google.bigtable.v2.RowFilter.Condition condition = 3;
        Specified by:
        getCondition in interface RowFilterOrBuilder
      • getSink

        public boolean getSink()
         ADVANCED USE ONLY.
         Hook for introspection into the RowFilter. Outputs all cells directly to
         the output of the read rather than to any parent filter. Consider the
         following example:
             Chain(
               FamilyRegex("A"),
               Interleave(
                 All(),
                 Chain(Label("foo"), Sink())
               ),
               QualifierRegex("B")
             )
                                 A,A,1,w
                                 A,B,2,x
                                 B,B,4,z
                                    |
                             FamilyRegex("A")
                                    |
                                 A,A,1,w
                                 A,B,2,x
                                    |
                       +------------+-------------+
                       |                          |
                     All()                    Label(foo)
                       |                          |
                    A,A,1,w              A,A,1,w,labels:[foo]
                    A,B,2,x              A,B,2,x,labels:[foo]
                       |                          |
                       |                        Sink() --------------+
                       |                          |                  |
                       +------------+      x------+          A,A,1,w,labels:[foo]
                                    |                        A,B,2,x,labels:[foo]
                                 A,A,1,w                             |
                                 A,B,2,x                             |
                                    |                                |
                            QualifierRegex("B")                      |
                                    |                                |
                                 A,B,2,x                             |
                                    |                                |
                                    +--------------------------------+
                                    |
                                 A,A,1,w,labels:[foo]
                                 A,B,2,x,labels:[foo]  // could be switched
                                 A,B,2,x               // could be switched
         Despite being excluded by the qualifier filter, a copy of every cell
         that reaches the sink is present in the final result.
         As with an [Interleave][google.bigtable.v2.RowFilter.Interleave],
         duplicate cells are possible, and appear in an unspecified mutual order.
         In this case we have a duplicate with column "A:B" and timestamp 2,
         because one copy passed through the all filter while the other was
         passed through the label and sink. Note that one copy has label "foo",
         while the other does not.
         Cannot be used within the `predicate_filter`, `true_filter`, or
         `false_filter` of a [Condition][google.bigtable.v2.RowFilter.Condition].
         
        optional bool sink = 16;
        Specified by:
        getSink in interface RowFilterOrBuilder
      • getPassAllFilter

        public boolean getPassAllFilter()
         Matches all cells, regardless of input. Functionally equivalent to
         leaving `filter` unset, but included for completeness.
         
        optional bool pass_all_filter = 17;
        Specified by:
        getPassAllFilter in interface RowFilterOrBuilder
      • getBlockAllFilter

        public boolean getBlockAllFilter()
         Does not match any cells, regardless of input. Useful for temporarily
         disabling just part of a filter.
         
        optional bool block_all_filter = 18;
        Specified by:
        getBlockAllFilter in interface RowFilterOrBuilder
      • getRowKeyRegexFilter

        public ByteString getRowKeyRegexFilter()
         Matches only cells from rows whose keys satisfy the given RE2 regex. In
         other words, passes through the entire row when the key matches, and
         otherwise produces an empty row.
         Note that, since row keys can contain arbitrary bytes, the `\C` escape
         sequence must be used if a true wildcard is desired. The `.` character
         will not match the new line character `\n`, which may be present in a
         binary key.
         
        optional bytes row_key_regex_filter = 4;
        Specified by:
        getRowKeyRegexFilter in interface RowFilterOrBuilder
      • getRowSampleFilter

        public double getRowSampleFilter()
         Matches all cells from a row with probability p, and matches no cells
         from the row with probability 1-p.
         
        optional double row_sample_filter = 14;
        Specified by:
        getRowSampleFilter in interface RowFilterOrBuilder
      • getFamilyNameRegexFilter

        public String getFamilyNameRegexFilter()
         Matches only cells from columns whose families satisfy the given RE2
         regex. For technical reasons, the regex must not contain the `:`
         character, even if it is not being used as a literal.
         Note that, since column families cannot contain the new line character
         `\n`, it is sufficient to use `.` as a full wildcard when matching
         column family names.
         
        optional string family_name_regex_filter = 5;
        Specified by:
        getFamilyNameRegexFilter in interface RowFilterOrBuilder
      • getFamilyNameRegexFilterBytes

        public ByteString getFamilyNameRegexFilterBytes()
         Matches only cells from columns whose families satisfy the given RE2
         regex. For technical reasons, the regex must not contain the `:`
         character, even if it is not being used as a literal.
         Note that, since column families cannot contain the new line character
         `\n`, it is sufficient to use `.` as a full wildcard when matching
         column family names.
         
        optional string family_name_regex_filter = 5;
        Specified by:
        getFamilyNameRegexFilterBytes in interface RowFilterOrBuilder
      • getColumnQualifierRegexFilter

        public ByteString getColumnQualifierRegexFilter()
         Matches only cells from columns whose qualifiers satisfy the given RE2
         regex.
         Note that, since column qualifiers can contain arbitrary bytes, the `\C`
         escape sequence must be used if a true wildcard is desired. The `.`
         character will not match the new line character `\n`, which may be
         present in a binary qualifier.
         
        optional bytes column_qualifier_regex_filter = 6;
        Specified by:
        getColumnQualifierRegexFilter in interface RowFilterOrBuilder
      • getColumnRangeFilter

        public ColumnRange getColumnRangeFilter()
         Matches only cells from columns within the given range.
         
        optional .google.bigtable.v2.ColumnRange column_range_filter = 7;
        Specified by:
        getColumnRangeFilter in interface RowFilterOrBuilder
      • getTimestampRangeFilter

        public TimestampRange getTimestampRangeFilter()
         Matches only cells with timestamps within the given range.
         
        optional .google.bigtable.v2.TimestampRange timestamp_range_filter = 8;
        Specified by:
        getTimestampRangeFilter in interface RowFilterOrBuilder
      • getValueRegexFilter

        public ByteString getValueRegexFilter()
         Matches only cells with values that satisfy the given regular expression.
         Note that, since cell values can contain arbitrary bytes, the `\C` escape
         sequence must be used if a true wildcard is desired. The `.` character
         will not match the new line character `\n`, which may be present in a
         binary value.
         
        optional bytes value_regex_filter = 9;
        Specified by:
        getValueRegexFilter in interface RowFilterOrBuilder
      • getValueRangeFilter

        public ValueRange getValueRangeFilter()
         Matches only cells with values that fall within the given range.
         
        optional .google.bigtable.v2.ValueRange value_range_filter = 15;
        Specified by:
        getValueRangeFilter in interface RowFilterOrBuilder
      • getValueRangeFilterOrBuilder

        public ValueRangeOrBuilder getValueRangeFilterOrBuilder()
         Matches only cells with values that fall within the given range.
         
        optional .google.bigtable.v2.ValueRange value_range_filter = 15;
        Specified by:
        getValueRangeFilterOrBuilder in interface