2015-02-10 9 views

cevap

8

son tabloyu bulmak için, BigQuery'yi masa sorgu işlevlerini kullanabilirsiniz: Örneğin

, son günlük GitHubArchive tablo: Maksimum kolaylık sağlamak için

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 

, bir görünüm olarak bu sorguyu saklayabilir başkalarıyla paylaşmak için. , Masa sorgu fonksiyonlar üzerinde daha fazla bilgi için

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

# 201859 

How do I use the TABLE_QUERY() function in BigQuery? için Ürdün'ün cevaba bakınız: Sonra sadece görünümü sorgulamak, son tabloyu sorgulamak için.

2

Felipe'nin yanıtı Legacy SQL kullanıyor. İşte Standart SQL'de bir çözüm. tablo adları (her gün için bir YYYYMMDD sonek kullanır) bağlantınızda Github en örnekteki gibi öngörülebilir bir eki varsa

, sen wildcard tables and TABLE_SUFFIX kullanabilirsiniz:

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}") 
) 

hakkında BigQuery'yi meta güvenmek istiyorsan yerine önekin oluşturma zamanı, yapabileceğiniz:

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

Not projenizde farklı şemaları ile tablo varsa sorgu birinci tablonun şema kullanacağından, ikincisi sözdizimi, tehlikeli olduğu joker karakterde görür.

Tarihe göre bölümlenmiş tablolar oluşturmaya çalışıyorsanız, yalnızca bunu yapan ve daha sonra sorgulamayı kolaylaştıran date-partitioned tables adlı BigQuery özelliği vardır.

İlgili konular