我创建了下表
CREATE TABLE IF NOT EXISTS OrderHistory (
status varchar,
id bigint,
ordtype varchar,
side varchar,
instrument varchar,
exrate double,
dt timestamp,
primary key((id,dt),status)
)
用命令填充我的桌子(截图)
我应该执行一个查询来计算某一天的不同ID。例如,它在SQL上:
SELECT COUNT(DISTINCT id) FROM OH.OrderHistory WHERE dt LIKE '%01/10/18%'
我尝试了很多cql但是徒劳无功
看起来应该是
SELECT DISTINCT COUNT(id) FROM oh.orderhistory WHERE dt <= '2018-01-11 00:00:00' and dt >= '2018-01-10 00:00:00' ALLOW FILTERING;
在SQL上但它不起作用
答案 0 :(得分:1)
Cassandra并非设计用于此类查询 - 由于其分布式特性,它不支持对任意列进行扫描。如果执行某些查询,则需要围绕此查询建模表(-ies)。例如,在您的示例中(据我所知,它是“查找给定日期的所有订单”),您可以使用 using System;
using System.Management;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_DisplayConfiguration");
string gc = "";
foreach (ManagementObject obj in searcher.Get())
{
foreach (PropertyData prop in obj.Properties)
{
if (prop.Name == "Description")
{
gc = prop.Value.ToString().ToUpper();
if (gc.Contains("INTEL") == true)
{
Console.WriteLine("Your Graphic Card is Intel");
}
else if (gc.Contains("AMD") == true)
{
Console.WriteLine("Your Graphic Card is AMD");
}
else if (gc.Contains("NVIDIA") == true)
{
Console.WriteLine("Your Graphic Card is NVIDIA");
}
else
{
Console.WriteLine("Your Graphic Card cannot recognized.");
}
Console.ReadLine();
}
}
}
}
}
}
类型而不是date
作为分区键(但您需要确保不会有数百万的订单)。
在这种情况下,您可能需要使用Spark,例如,扫描整个数据&amp;执行聚合。