【问题标题】:CQL filter method - pythonCQL过滤方法-python
【发布时间】:2020-02-07 20:20:27
【问题描述】:

我有以下 CQL 表。

session = columns.Date(primary_key=True, partition_key=True, required=True)
entity = columns.Text(primary_key=True, partition_key=True, required=True)
broker = columns.Text(primary_key=True, required=True)
prof = columns.Text(primary_key=True, required=True)
prod = columns.Text(primary_key=True, required=True)
.... 

从 cql 引擎读取文档有一个 'filter' 方法,我可以用来过滤(会话、实体)-> 分区键或任何我想要的。

我的问题是以下问题,我想总是按(会话,实体)过滤,但也可能有一些字段,例如“prof”或“prod”或两者兼而有之。

我的功能如下。

def search_by(cls, entity, session, **kwargs): #entity, session, filter
        activity_summary = ActivitySummary.objects \
             .filter(entity=entity, session=session) \
             .filter(kwargs) \
             .allow_filtering()
        return cls._to_dataframe(activity_summary)

其中 **kwargs 是我的变量过滤器,一个带有我想用来过滤它的主键的字典(例如 {'prof':'MAXIMO'} )。

但它不起作用,因为它没有正确匹配字典名称与列 cql 表名称。

有什么想法吗?谢谢。

【问题讨论】:

    标签: python filter cassandra cql


    【解决方案1】:

    您需要在传递 kwargs 时对其进行扩展。

    def search_by(cls, entity, session, **kwargs): #entity, session, filter
            activity_summary = ActivitySummary.objects \
                 .filter(entity=entity, session=session) \
                 .filter(**kwargs) \
                 .allow_filtering()
            return cls._to_dataframe(activity_summary)
    

    注意.filter(**kwargs) 而不是.filter(kwargs)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2012-04-25
      • 2017-09-29
      • 2010-09-17
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多