2017-01-09 1 views
-1

저는 현재 BigQuery에서 얻은 데이터로 자체 분석 패널을 만들려고합니다. 내 모든 데이터가 올바르게 들어오고 있으며 각 테이블을 개별적으로 쿼리하거나 특정 데이터 집합의 모든 테이블을 쿼리 할 수 ​​있지만 프로젝트 내의 모든 데이터 집합을 쿼리 할 수는 없습니다.bigquery에서 프로젝트 내의 모든 데이터 세트 및 테이블을 쿼리 하시겠습니까?

간단히 말해서 BigQuery 내 모든 테이블을 한 번에 쿼리하고 싶습니다. BigQuery의 표는 Firebase Analytics에 의해 채워지고 있으며 예고없이 변경되거나 추가 또는 삭제 될 수 있습니다.

쿼리 내 각 테이블은 JOIN이지만 값은 하드 코딩 된 방법을 알고 있습니다. 와일드 카드를 제공하고 모든 테이블을 자동으로 쿼리 할 수있는 방법이 필요합니다.

도움이 될 것입니다. 감사합니다.

답변

5

불행히도 미리 데이터 세트 이름을 알지 못하면 모든 데이터 세트의 모든 테이블을 쿼리 할 수있는 단일 쿼리를 작성할 수 없습니다.

그러나 프로그래밍 방식으로 쿼리를 구성 할 수있는 경우 BigQuery의 datasets.list API을 사용하여 모든 데이터 집합 이름을 가져온 다음 위에서 설명한대로 테이블 와일드 카드를 사용하여 해당 데이터 집합 내의 모든 테이블을 가져 오는 쿼리를 구성 할 수 있습니다.

1

wildcard tables에 대한 설명서를 보았습니까? 그것이주는 예는 다음과 같습니다

#standardSQL 
SELECT 
    max, 
    ROUND((max-32)*5/9,1) celsius, 
    mo, 
    da, 
    year 
FROM 
    `bigquery-public-data.noaa_gsod.gsod19*` 
WHERE 
    max != 9999.9 # code for missing data 
    AND _TABLE_SUFFIX BETWEEN '29' 
    AND '40' 
ORDER BY 
    max DESC; 

와일드 카드 테이블, 그래도 테이블 수준에서 적용 -이 아닌 데이터 세트 레벨 - 그래서 당신은 아직도 당신의 데이터 세트, 예를 들어 모두에서 테이블 간의 결합을 수행해야합니다 :

SELECT * 
FROM (
    SELECT * FROM `first-dataset.*` UNION ALL 
    SELECT * FROM `second-dataset.*` UNION ALL 
    SELECT * FROM ... 
); 
+0

여기에서 문제가 있습니다. 와일드 카드에 대해 알고 있지만 자동으로 모든 데이터 세트를 가져 와서 쿼리하는 방법이 필요합니다. 하나의 데이터 세트 이름을 하드 코딩 할 수 없습니다. –

관련 문제