2017-07-06 2 views
0

Ich säubere meinen Produktionsdatensatz, ich suche nach nutzlosen Einträgen.BigQuery Finde heraus, zu welcher Tabelle ein Eintrag gehört

SELECT count(pid_like) FROM TABLE_DATE_RANGE(DATASET.TABLE_PRODUCTION_, DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'),CURRENT_TIMESTAMP()) where c1 is null and c2 is null and c3 is null and c4 is null 

So möchte ich Einträge löschen, wo c1, c2, c3 und c4 null sind.

Bevor ich auf den letzten 30 Tische aus der Reinigung als:

# done for each last 30 tables 
DELETE FROM DATASET.TABLE_PRODUCTION_YYYYMMDD where c1 is null and c2 is null and c2 is null and c4 is null. 

Aber nach der Reinigung einige nutzlose Einträge bleiben, aber ich kann nicht finden, auf welchem ​​Tisch sie sind.

Antwort

2

dieses Versuchen Sie, welche Tabellen haben Zeilen mit NULL-Werte zu finden:

#standardSQL 
SELECT 
    _TABLE_SUFFIX AS suffix, 
    COUNT(*) AS null_count 
FROM `DATASET.TABLE_PRODUCTION_*` 
WHERE _TABLE_SUFFIX BETWEEN 
    FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) AND 
    FORMAT_DATE('%Y%m%d', CURRENT_DATE()) AND 
    c1 IS NULL AND 
    c2 IS NULL AND 
    c3 IS NULL AND 
    c4 IS NULL 
GROUP BY suffix 
HAVING null_count > 0 
ORDER BY null_count DESC; 

Es wird die Suffixe (Termine) mit null Zeilen und die Grafen zurück.

+0

Schön! Können Sie mich auf die zugehörige Dokumentation verweisen? –

+1

Vielleicht dieser? https://cloud.google.com/bigquery/docs/querying-wildcard-tables#filtering_selected_tables_using_table_suffix. Hier ist FORMAT_DATE, aber Sie können auch andere Funktionen hier finden: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#format_date –

+0

Vielen Dank :) –

Verwandte Themen