2016-11-04 3 views

답변

1

는 구체화 된 뷰에 post Theres는. 이 도구를 사용하여 시간별로 배치 된 데이터의 복사본을 만들 수 있습니다. 그런 다음로드시 평균 집계 함수를 사용하십시오. 내 생각에 CASSANDRA-11871group by에있는 모든 의존성이 최근에 완료되었지만 아직 작업되지 않았습니다.

좀 단지 (정말 테스트하지 면책 조항)과 같은 스키마하지만 뭔가 추측 :

는 * 60 * 60 date_hour 1000에 의해 분할을 의미, 시간 해상도 단지 소인입니다
CREATE TABLE load (
ref_equip text, 
ptd_assoc text, 
date timestamp, 
date_hour bigint, 
load float, 
PRIMARY KEY ((ref_equip, ptd_assoc), date) 
); 

CREATE MATERIALIZED VIEW load_by_hour AS 
SELECT * FROM load 
WHERE ref_equip IS NOT NULL AND ptd_assoc IS NOT NULL 
PRIMARY KEY ((ref_equip, ptd_assoc), date_hour, date); 

(EPOC는 밀리) 삽입 할 때. 다음

SELECT avg(load) FROM load_by_hour WHERE ref_equip='blarg' AND ptd_assoc='blargy' AND date_hour = 410632; 

또는 시간 단위로 분할 당신에게 데이터를 저장하는 것입니다로 시작하는 것이 더있을 수 있습니다 뭔가, 평균 선택할 수 있습니다

CREATE TABLE load (
ref_equip text, 
ptd_assoc text, 
date timestamp, 
date_hour bigint, 
load float, 
PRIMARY KEY ((ref_equip, ptd_assoc, date_hour), date) 
); 
+0

HUMM을, 나는 구체화 된 뷰의 사용을 이해하지만 난 할 수 당신은'date' 필드를 필드로드가 4 * 15 분의 평균이되는 시간 단위의 집계로 어떻게 변환 할 수 있는지 이해합니다 :/ –

+0

기본적으로'load' 테이블은 이미 알고 있습니다. 정의 된 date_hour, 당신은 단지 평균을 쿼리하는 뷰를 사용합니다. 그래서, 내가 '로드'테이블에 데이터를 삽입하기 전에 나는 ms로 이미 1000 * 60 * 60으로 타임 스탬프를 나눠야 만합니까? –

+0

date_hour는 데이터를 버킷으로 저장하는 것입니다 (무한대로 커지는 파티션을 원하지는 않습니다). 그리고 MV를 구축하기위한 키를 제공해야합니다. 정확하게 타임 스탬프를 나누어서 만듭니다. 그런 다음 해당 범위 또는 그 범위를 쿼리하려면 –