python

pqwbnv8z  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(261)

我有下面的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”方法,我可以用它来过滤(session,entity)->分区键或者任何我想要的东西。
我的问题是,我希望总是按(session,entity)过滤,但也要按可能的字段数过滤,例如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表名。
你知道吗?谢谢。

mwngjboj

mwngjboj1#

你需要在传递过程中扩展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)

相关问题