2016-08-18 1 views
0

고유 방문자에 대해보고 할 수 있어야하지만 모든 가능한 순열을 미리 계산하지 않고 여러 테이블을 만드는 것을 피하십시오.Redshift에 대한 Postgresql-hll (또는 다른 Hyperloglog 데이터 유형/구조체)

단순한 예를 들어

,이 전 다음과 같은 열이

  • 날짜 (월/년) country_id
  • 페이지 ID가있는 테이블에 월간 순 방문자수를보고해야 가정 해 봅시다
  • 을 device_type_id
  • monthly_uniques

드루이드 (Druid)와 레디 스 (Redis)는 Hyperloglog 데이터 유형이이 문제를 처리 할 것입니다 (오류의 작은 여백이 허용된다고 가정 할 때). 어떤 차원의 조합으로도 쿼리를 실행하고 고유 한 값을 얻을 수 있습니다.

가장 가까운 PostgreSQL에서 찾을 수있는 세계는 postgresql-hll 플러그인이지만 PostgreSQL 9.0 이상인 것으로 보입니다.

Redshift에서 방문자 ID를 미리 계산하거나 저장하지 않고도이를 표현할 수 있습니까 (RedShift의 "대략적인 계산"hll 구현을 사용할 수 있음).

참고 : RedShift가 기본 플랫폼이지만 CitusDB와 같은 다른 자체 호스팅 PostgreSQL 포크도 지원할 수 있습니다. RedShift로이 작업을 수행 할 방법을 찾고 있습니다.

+0

내가 본 것처럼 마지막으로 변경된 사항이없는 한 redshift는 사용자 정의 유형이나 플러그인을 허용하지 않습니다. 나는 파이썬 함수에 대한 사용자 정의 함수 지원을 추가 했으므로 함수로 hll 알고리즘을 구현할 수 있어야한다.하지만 그것은 스스로해야 할 일이다. – jmelesky

+0

쿼리 수준에서 hll은 select 문에서 count보다 앞에 "approximate"키워드를 사용하여 구현됩니다. 불행히도 원시 데이터 또는 원시 데이터에 가까운 데이터가있는 경우에만 작동합니다. 나는이 모든 것을 저장하는 것을 피하려고 노력하고있다. 문서 : http://docs.aws.amazon.com/redshift/latest/dg/r_COUNT.html – Sologoub

+0

Redshift는 포스트 그레스 (Postgres) 라인 프로토콜을 사용하지만 매우 오래 전에 포크되어 기능이 크게 변경되었습니다. 사용자 정의 유형을 수행 할 수있는 기능이 없으므로 사용자가 요구하는 것이 가능하다고 생각하지 않습니다. – jmelesky

답변

0

기술적으로 postgresql에서 파생 된 Redshift는 10 년 전에 포크로 찍었습니다. 여전히 포스트그레스와 같은 회선 프로토콜을 사용하지만, 코드가 많이 분산되어 있습니다. 다른 비 호환성 중에서도 더 이상 사용자 지정 데이터 형식을 사용할 수 없습니다. 즉, 사용하려는 플러그인의 유형이 실현 가능하지 않다는 것을 의미합니다.

그러나 원시 데이터를 모두 가져올 수 있다면 내장 된 근사 기능을 사용할 수 있습니다.

관련 문제