我想知道BigQuery標準SQL中與RTRIM和REGEXP_REPLACE有關的性能。以下兩個 這將是更好的性能:BigQuery REGEXP_REPLACE vs RTRIM的標準性能
DISTINCT RTRIM("12367e","abcdefghijklmnopqrstuvwxyz")
與 REGEXP_REPLACE("12367e", r"\D$", "")
我不知道是否有這兩種方法之間有很大的性能變化。
我想知道BigQuery標準SQL中與RTRIM和REGEXP_REPLACE有關的性能。以下兩個 這將是更好的性能:BigQuery REGEXP_REPLACE vs RTRIM的標準性能
DISTINCT RTRIM("12367e","abcdefghijklmnopqrstuvwxyz")
與 REGEXP_REPLACE("12367e", r"\D$", "")
我不知道是否有這兩種方法之間有很大的性能變化。
除非您有大量數據,否則看起來沒有太大的差別。我對bigquery-public-data.github_repos.commits
表嘗試了一些查詢,將這些字符串轉換應用於commits
列,其值爲0000120032a071dcd7e4bb1c8d418ca7a0028431
。
,我嘗試的查詢是:
SELECT COUNTIF(RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '')
FROM `bigquery-public-data`.github_repos.commits;
SELECT COUNTIF(REGEXP_REPLACE(commit, r'\D$', '') = '')
FROM `bigquery-public-data`.github_repos.commits;
SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '';
SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE REGEXP_REPLACE(commit, r'\D$', '') = '';
這些所有的過程7.91 GB的數據(從剛剛字符串列)和兩到三秒鐘時間才能運行,而無需任何查詢在於速度遠遠其餘的部分。我故意過濾了數據,結果是空的,因爲我不想寫入時間。
很高興知道,非常感謝Elliot的回覆! – RomainD
如果這回答你的問題,請接受/ upvote我的迴應。另請參閱[StackOverflow幫助主題](https://stackoverflow.com/help/someone-answers)。謝謝! –
您是在過濾器還是在選擇列表中使用它? –
根據我的經驗,爲了優化BQ查詢,最好的辦法是學習如何高效地使用數組和結構。就功能之間的差異而言,BQ足夠快以至於最終使用哪一點並不重要。 –