有一个列系列看起来像:
CREATE TABLE data (
id uuid,
order_id text,
order_ts timestamp,
product_category text,
product_distributor text,
store_state text,
transaction_discount decimal,
transaction_id text,
transaction_qty int,
transaction_total decimal,
PRIMARY KEY (id)
)
如何查询没有transaction_total
的所有行?似乎它很简单(ISNULL
),但在Cassandra中不存在。
答案 0 :(得分:1)
为了能够过滤列NULL
暗示:
NULL
被认为是值,而不是缺失值的标记作为旁注,SQL空间中已经讨论了NULL
marker-vs-value及其3值逻辑的含义,解释和含义(见wkipedia article }
回到卡桑德拉:
NULL
列实际上不存在 - 将不存储标记,标记或值)NULL
- is-it-a-value-or-a-marker问题,您可以使用默认值(对于此特定示例,似乎将transaction_total
设置为-1会明确表示需要计算的值) 更新:发布以上内容让我想到是否有办法引入is_column_missing
运营商(这也不是一次性能损失)。 Cassandra使用布隆过滤器来减少磁盘搜索次数 - 布隆过滤器基本上可以确定文件中是否不存在行。不幸的是,没有可用于检查相同类型信息的每行列索引,因此基本上C *必须读取行的所有条目以确定列是否存在。你可以想象这会很糟糕。
答案 1 :(得分:-1)