2017-04-17 60 views
0

使用BigQuery,我可以從我的項目中的每個數據集中選擇__TABLES__嗎?我試過SELECT * FROM '*.__TABLES',但這在BigQuery中是不允許的。任何幫助將是偉大的,謝謝!BigQuery從項目中的所有表中選擇__TABLES__?

+0

您是否使用標準SQL或傳統的SQL? –

+0

@DevilingMaster標準SQL。 –

+0

從你的問題我明白,你沒有一個共同的前綴,你需要查詢到的所有表的名稱,這是真的嗎? –

回答

1

__TABLES__語法只對特定數據集的支持和整個數據集不起作用

你可以做的東西如下

#standardSQL 
WITH ALL__TABLES__ AS (
    SELECT * FROM `bigquery-public-data.1000_genomes.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.baseball.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.bls.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.census_bureau_usa.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.cloud_storage_geo_index.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.cms_codes.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.common_us.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.fec.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.genomics_cannabis.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.ghcn_d.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.ghcn_m.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.github_repos.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.hacker_news.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.irs_990.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.medicare.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.new_york.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.nlm_rxnorm.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.noaa_gsod.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.open_images.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.samples.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.san_francisco.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.stackoverflow.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.usa_names.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.utility_us.__TABLES__` 
) 
SELECT * 
FROM ALL__TABLES__ 

在這種情況下,你需要知道的提前列表數據集,您可以通過Datasets: list API或使用相應的bq ls

輕鬆完成請注意:上述方法僅適用於具有相同位置數據的數據集。如果你有在不同位置的數據集,您將需要查詢他們在兩個不同的查詢

例如:

#standardSQL 
WITH ALL_EU__TABLES__ AS (
    SELECT * FROM `bigquery-public-data.common_eu.__TABLES__` UNION ALL 
    SELECT * FROM `bigquery-public-data.utility_eu.__TABLES__` 
) 
SELECT * 
FROM ALL_EU__TABLES__