2015-02-10 42 views

回答

8

要查找最新的表,你可以使用BigQuery的表查詢功能:

例如,最新的每日GitHubArchive表:

SELECT COUNT(*) num_records 
FROM TABLE_QUERY(githubarchive:day, 
    "table_id IN (
    SELECT table_id FROM githubarchive:day.__TABLES__ 
    ORDER BY creation_time DESC LIMIT 1)") 

# 201859 

爲了最大限度地方便,你可以在查詢存儲爲視圖與他人分享。然後,查詢最新的表格,只需查詢視圖:

SELECT num_records 
FROM [fh-bigquery:public_dump.githubarchive_latest_day] 

# 201859 

更多關於表查詢功能,看到喬丹的回答How do I use the TABLE_QUERY() function in BigQuery?

2

Felipe的答案使用Legacy SQL。這是標準SQL中的一個解決方案。

如果你的表名在你的鏈接可預測的後綴像GitHub的例子(使用YYYYMMDD後綴的每一天),你可以使用wildcard tables and TABLE_SUFFIX

SELECT COUNT(*) 
FROM `githubarchive.day.events_*` 
WHERE _TABLE_SUFFIX = (
    SELECT MAX(SUBSTR(table_id, -8)) 
    FROM `githubarchive.day.__TABLES_SUMMARY__` 
    WHERE REGEXP_CONTAINS(table_id, "events_\\d{8}") 
) 

如果你想依靠BigQuery的關於元數據創建時間,而不是前綴,你可以這樣做:

SELECT COUNT(*) 
FROM `githubarchive.day.*` 
WHERE _TABLE_SUFFIX = (
    SELECT table_id 
    FROM `githubarchive.day.__TABLES_SUMMARY__` 
    ORDER BY creation_time DESC 
    LIMIT 1 
) 

需要注意的是,如果你有在你的項目不同模式的表格,後者語法是危險的,因爲查詢將使用第一個表的架構它在通配符中看到。

如果您正在嘗試創建按日期分區的表格,那麼可以使用名爲date-partitioned tables的BigQuery功能來實現這一功能,並且使查詢更容易。

相關問題