如何在 Google Cloud Bigtable 中应用多个过滤条件,例如“col_a='some_value' AND col_b='some_another_value'”

问题描述 投票:0回答:1

我创建了一个链式过滤器,如下所示:

Filters.Filter filter =
                    FILTERS
                            .condition(
                                    FILTERS
                                            .chain()
                                            .filter(FILTERS.family().exactMatch(columnFamily))
                                            .filter(FILTERS.qualifier().exactMatch("col_a"))
                                            .filter(FILTERS.value().exactMatch("value_a"))
                            )
                            .then(FILTERS.pass())
                            .otherwise(FILTERS.block());

但这只是针对像

'col_a=value_a'
这样的一种情况。如何使用多个过滤器从Bigtable中获取数据?

链式过滤器的行为有所不同。它们仅输出匹配的单元格。因此,我必须在“然后”和“否则”函数中应用“通过”和“阻止”过滤器。

如何为另一列限定符和值添加一个条件?

google-cloud-platform google-cloud-bigtable bigtable
1个回答
0
投票
Filters.Filter filter = FILTERS.chain()
        .filter(FILTERS.condition(
                        FILTERS.chain().filter(FILTERS.qualifier().exactMatch(columnName1))
                                .filter(FILTERS.value().exactMatch(columnValue))
            ).then(FILTERS.pass()))
        .filter(FILTERS.condition(
                FILTERS.chain().filter(FILTERS.qualifier().exactMatch(columnName2))
                                .filter(FILTERS.value().exactMatch(columnValue2))
            ).then(FILTERS.pass()))


Query query = Query.create(tableName) // use .prefix() or .rowKey() here to narrow search    
                .filter(filter)
© www.soinside.com 2019 - 2024. All rights reserved.