首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡桑德拉的通用模式还是特殊模式?

卡桑德拉的通用模式还是特殊模式?
EN

Stack Overflow用户
提问于 2016-03-03 18:59:07
回答 1查看 132关注 0票数 0

很长的文章,所以让我们从一些上下文开始:天气数据在我们的体系结构中起着核心作用。天气资料主要由五个数值组成:

  • 温度
  • 下雨
  • 全球辐射
  • 风(方向、速度)
  • 相对湿度

但是我们也可以有更多的自定义值。

我们的具体特点是:

缺失值:所有这五个值并不总是可从一个气象站获得。有时,我们需要从最近的气象站(例如:全球辐射)获取丢失的数值。

采样率:对于一个给定的气象站,采样率可以是不同的五个值。

虚拟站:我们也有特殊的“虚拟”气象站,它们由分离的天气传感器(来自真实的气象站)组成。

在所有情况下,在获取过程结束时,对于气象站中的每个事件(真实的或虚拟的),我们需要从这五个值中计算出一些更高级别的指数。这五个数值或更高水平的指数中有一些是每日汇总的。

我们计划使用星火进行数据处理。

这三种模型中哪一种是最相关的,这不会剥夺我们卡桑德拉的利益?

如何管理传感器与weather_stations (缺失数据和虚拟站)之间的关系?

传感器模型.所有数据的一个表

代码语言:javascript
运行
复制
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)
}

测量模型.按数据类型划分的一个表

代码语言:javascript
运行
复制
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 {
...
}

所有的测量都是一样的。然后,我们需要从这些表中处理数据,以聚合所有数据,以较低的采样率填充缺失值和重复值。

代码语言:javascript
运行
复制
CREATE TABLE weather_data (
    weather_station_id uuid,
    day date,
    timestamp timestamp,
    ...
    PRIMARY KEY ((weather_station_id, day), timestamp)
);

气象站模型-一张包含所有数据的表格

代码语言:javascript
运行
复制
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表,以较低的采样率填充缺失值和重复值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 00:44:24

要回答这个问题,了解如何使用cql查询数据非常重要。你能提供更多关于这方面的信息吗?

要解决“虚拟气象站”的问题,您可以这样做:

代码语言:javascript
运行
复制
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)
);

并使用相同的表用于真实的和虚拟的站点。当您从一个属于真实站和虚拟站的传感器读取数据时,您可以使用批处理执行两个更新(或更多更新)。例如:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35780694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档