【问题标题】:Copying a value from table to another using cassandra使用 cassandra 将值从表复制到另一个
【发布时间】:2014-11-21 18:05:38
【问题描述】:

我在 cassandra 中有一个非常大的表,其中包含 (caseid,timestamp,activity) 作为以 caseid 和时间戳作为主键的列。caseid 的值正在重复,我想提取对应的第一个活动值到 caseid 并将其放入仅包含活动的另一个表(名为 initialActivity)。有人可以帮助我了解如何使用 cql 查询来实现这一点。谢谢。

【问题讨论】:

  • 您对此有任何现有的查询吗?你试过了吗?
  • @Rahul: 是的,最初我试图使用 Java 程序来做事,我提取了所有 caseid,然后对于每个 caseid,我从 caseid=" 的表中运行查询选择活动111" 限制 1;并将其收集到一个 String 对象中,然后 INSERT INTO initialActivity(activity text) values ("");但是现在我不想使用JAVA,只想在cql中做。谢谢。
  • 请尝试以下查询并告诉我。插入到 initialActivity(activity) SELECT activity FROM preActivity where caseId = 111 LIMIT 1
  • 您不能仅通过 cql 执行此操作,请参阅此 q/a:stackoverflow.com/questions/14633624/…
  • 对于这样的批处理请求,您很可能希望使用 Hadoop 或 Spark 等批处理分析框架。

标签: cassandra cql


【解决方案1】:

请试试这个

Insert into initialActivity() values 
(select activity from preActivity where caseId = 111 LIMIT 1 );

只有activitycaseId = 111 列的第一行才会插入到initialActivity 表中

更多信息请参考这里 CQL

【讨论】:

  • 我执行了查询 INSERT INTO 初始(事件)值(从 cqldata 中选择子状态,其中 caseid='1-734922986' LIMIT 1)...但它向我显示错误在输入时没有可行的替代方案'选择'。我无法弄清楚这里出了什么问题,或者 cassandra 是否支持此类查询?
  • 请用您正在尝试的查询和您面临的错误更新问题。
  • cassandra 不支持此语法
  • @mikea:因此,在 cql 中我无法获得与 caseid 对应的活动的第一个值。这只能像我之前做的那样通过某些应用程序(如 Java 应用程序)来完成吗?
猜你喜欢
  • 2020-09-29
  • 2017-09-02
  • 2015-05-17
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多