BigQueryには、約40Mbのデータを含むある種のアクティビティのテーブルがあります。活動日は、フィールドの1つに保管されます(YYYY-MM-DD HH:MM:SS形式の文字列)。妥当な時間を実行している非アクティブの期間(事前定義されたしきい値を使用)を決定する方法を見つける必要があります。
私が作成したクエリはすでに1時間実行されています。ここにあります:
SELECT t1.date, MIN(PARSE_UTC_USEC(t1.date) - PARSE_UTC_USEC(t2.date)) AS mintime
FROM logs t1
JOIN (SELECT date, http_error FROM logs) t2 ON t1.http_error = t2.http_error
WHERE PARSE_UTC_USEC(t1.date) > PARSE_UTC_USEC(t2.date)
GROUP BY t1.date
HAVING mintime > 1000;
アイデアは次のとおりです。1。テーブルのデカート乗算をそれ自体で実行します(http_errorは値をほとんど変更しないフィールドであるため、トリックを実行します)2. date1>date23のペアのみを取得します。この最小の差がしきい値を超える場合は、選択を制限してください。
私が使用する実際のクエリは、無効なデータの修正によって少し負担になることを認めます(これにより追加の操作が追加されます)。しかし、私はこれを行うためのより良いアイデアが本当に必要です。他のアイデアを聞いてうれしいです