很长的文章,所以让我们从一些上下文开始:天气数据在我们的体系结构中起着核心作用。天气资料主要由五个数值组成:
但是我们也可以有更多的自定义值。
我们的具体特点是:
缺失值:所有这五个值并不总是可从一个气象站获得。有时,我们需要从最近的气象站(例如:全球辐射)获取丢失的数值。
采样率:对于一个给定的气象站,采样率可以是不同的五个值。
虚拟站:我们也有特殊的“虚拟”气象站,它们由分离的天气传感器(来自真实的气象站)组成。
在所有情况下,在获取过程结束时,对于气象站中的每个事件(真实的或虚拟的),我们需要从这五个值中计算出一些更高级别的指数。这五个数值或更高水平的指数中有一些是每日汇总的。
我们计划使用星火进行数据处理。
这三种模型中哪一种是最相关的,这不会剥夺我们卡桑德拉的利益?
如何管理传感器与weather_stations (缺失数据和虚拟站)之间的关系?
传感器模型.所有数据的一个表
CREATE TABLE sensor_data {
sensor_id uuid
day text,
timestamp timestamp,
sensor_type text,
value double,
weather_station_id
PRIMARY KEY ((sensor_id, day), timestamp)
}
CREATE TABLE weather_data {
weather_station_id uuid,
day date,
timestamp timestamp,
sensor_data seq<sensor_data>
PRIMARY KEY ((weather_station_id, day), timestamp)
}
测量模型.按数据类型划分的一个表
CREATE TABLE weather_temperature {
sensor_id uuid,
day text,
timestamp timestamp,
value double,
weather_station_id
PRIMARY KEY ((sensor_id, day), timestamp)
}
CREATE TABLE weather_rain {
...
}
所有的测量都是一样的。然后,我们需要从这些表中处理数据,以聚合所有数据,以较低的采样率填充缺失值和重复值。
CREATE TABLE weather_data (
weather_station_id uuid,
day date,
timestamp timestamp,
...
PRIMARY KEY ((weather_station_id, day), timestamp)
);
气象站模型-一张包含所有数据的表格
CREATE TABLE weather_data (
weather_station_id text,
day date,
timestamp timestamp,
temperature float,
rain float,
global_radiation float,
relative_humidity float,
wind_speed float,
wind_direction float,
PRIMARY KEY ((weather_station_id, day), timestamp)
);
然后用虚站填充weather_data_processed表,以较低的采样率填充缺失值和重复值。
发布于 2016-03-04 00:44:24
要回答这个问题,了解如何使用cql查询数据非常重要。你能提供更多关于这方面的信息吗?
要解决“虚拟气象站”的问题,您可以这样做:
CREATE TABLE weather_data_station_sensor (
weather_station_id text,
sensor_id text,
day date,
timestamp timestamp,
temperature float,
rain float,
global_radiation float,
relative_humidity float,
wind_speed float,
wind_direction float,
PRIMARY KEY ((weather_station_id, day), sensor_id, timestamp)
);
并使用相同的表用于真实的和虚拟的站点。当您从一个属于真实站和虚拟站的传感器读取数据时,您可以使用批处理执行两个更新(或更多更新)。例如:
BEGIN BATCH
INSERT INTO weather_data_station_sensor (weather_station_id, sensor_id ...etc) VALUES ('station_1', 'id_1' ... etc);
INSERT INTO weather_data_station_sensor (weather_station_id, sensor_id ...etc) VALUES ('station_2', 'id_1' ... etc);
APPLY BATCH
https://stackoverflow.com/questions/35780694
复制相似问题