cassandra - Cassandra where 子句作为元组
问题描述
Table12
CustomerId CampaignID
1 1
1 2
2 3
1 3
4 2
4 4
5 5
val CustomerToCampaign = ((1,1),(1,2),(2,3),(1,3),(4,2),(4,4),(5,5))
是否可以编写类似的查询
select CustomerId, CampaignID from Table12 where (CustomerId, CampaignID) in (CustomerToCampaign_1, CustomerToCampaign_2)
???
所以输入是一个元组,但列不是元组,而是单个列。
解决方案
当然,这是可能的。但仅限于集群键。这意味着我需要使用其他东西作为分区键或“存储桶”。对于此示例,我将假设营销活动对时间敏感,并且通过使用“月”作为存储桶(分区),我们将获得良好的分布和易于查询。
CREATE TABLE stackoverflow.customertocampaign (
campaign_month int,
customer_id int,
campaign_id int,
customer_name text,
PRIMARY KEY (campaign_month, customer_id, campaign_id)
);
现在,我可以INSERT
在你的CustomerToCampaign
变量中描述数据。然后,此查询有效:
aploetz@cqlsh:stackoverflow> SELECT campaign_month, customer_id, campaign_id
FROM customertocampaign WHERE campaign_month=202004
AND (customer_id,campaign_id) = (1,2);
campaign_month | customer_id | campaign_id
----------------+-------------+-------------
202004 | 1 | 2
(1 rows)
推荐阅读
- java - 如何在 mySQL 表上插入扫描值?
- linux - Google Compute Engine 虚拟机上的 Selenium chromedriver 可执行文件
- android - E/DynamiteModule:加载模块描述符类失败
- javascript - Angular FormGroup 在本地方法中未定义
- azure-devops - Azure 逻辑应用程序 - 失败并出现错误:“浏览器已关闭。”。请重新登录
- swiftui - Swift UI 中的 UIPicker
- python-3.x - 如何在此页面中找到要抓取的元素?
- r - 如何重新排列 dplyr 的输出
- node.js - 在不全局安装的情况下将命令分配给我的 NPM 包
- apache - 如何使用 htacess 跳过第一个 uri 段?