2016-07-29 1 views
4

BigQuery의 Firebase Analyics 테이블을 제 3 자와 공유하기 전에 5 행 미만으로 표시되는 도시가있는 행을 제거해야합니다. 테이블 구조를 잃지 않고 어떻게이 작업을 수행 할 수 있습니까?Firebase Analytics에서 행 삭제하기 덜 인기있는 값으로 BigQuery로 내보내기

도전 : BigQuery에서의

  • 중포 기지 분석 데이터 행을 내포하고 있으며, 나는 중첩 된 구조를 잃고 싶지 않아.
  • 다른 지역의 일부 도시는 동일한 이름을 사용합니다. 즉, 계산할 때 최소한 두 개의 필드 (도시, 지역)를 사용해야합니다.
  • 때때로 도시 및/또는 지역은 null 일 수 있습니다. 나는 그 행을 잃고 싶지 않아.

답변

3

빠른 쿼리 :

:
  • 결과
  • 빠른 설명을 평평하지 허용

    • 큰 결과
    • 을 :

      SELECT *, 
          IFNULL(user_dim.geo_info.city,'_')+IFNULL(user_dim.geo_info.region,'_') cityregion, 
      FROM [dataset.app_events_20160607] 
      HAVING cityregion NOT IN (
          SELECT cityregion FROM (
          SELECT COUNT(*) c, IFNULL(user_dim.geo_info.city,'_')+IFNULL(user_dim.geo_info.region,'_') cityregion 
          FROM [dataset.app_events_20160607] 
          GROUP BY 2 
          HAVING c<6 
      ) 
      ) 
      

      당신은에 옵션을 설정해야합니다

      • SELECT *, [...] cityregion은 구조를 잃지 않고 새로운 열 cityregion을 추가하지 않고 모든 결과를 가져옵니다.
      • IFNULL(..., '_') replaces null values with _`이므로 도시와 지역을 결합하여 하나가 null 일 수 있습니다.
      • HAVING cityregion NOT IN은 새 cityregion 열을보고 하위 쿼리에 없는지 확인합니다.
      • 하위 쿼리는 도시 지역의 각 조합을 계산하고 6 회 미만으로 나타나는 쿼리 만 나열합니다.
    2

    은 때때로 당신은이 작업을 수행해야합니다 아래
    테스트하지 않았 공개 데이터에 추가 여분의 열을 가진 "여유"하지만 수 없습니다 - 당신은 그냥 Standard SQL

    SELECT * 
    FROM `dataset.app_events_20160607` 
    WHERE CONCAT(IFNULL(user_dim.geo_info.city,'_'), IFNULL(user_dim.geo_info.region,'_')) NOT IN (
        SELECT cityregion FROM (
        SELECT COUNT(*) c, CONCAT(IFNULL(user_dim.geo_info.city,'_'), IFNULL(user_dim.geo_info.region,'_')) cityregion 
        FROM `dataset.app_events_20160607` 
        GROUP BY 2 
        HAVING c<6 
    ) 
    ) 
    
    에서 실행해야합니다
    관련 문제