Databricks Certified Data Analyst Associate 無料問題 5 / 10 ・ 分野4: Executing queries using Databricks SQL and Databricks SQL Warehouses
ダッシュボードで、日ごとの訪問者の数を、直近7日の移動の窓で推定して並べたい。アナリストは approx_count_distinct(visitor_id) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) の形を考えている。リファレンスの説明に合うものはどれか。
- 書けない。近似の集計は GROUP BY の中だけで使える
- 書ける。この関数は窓関数としても呼べると書かれている
- 窓の中では count(DISTINCT) に替えて書く
- 窓の中でも書けるが、relativeSD の指定が要る
正解と解説を見る
正解: B
正解の理由
approx_count_distinct のリファレンスの Syntax は、approx_count_distinct(expr[, relativeSD]) [FILTER ( WHERE cond ) ] の書き方を示したあとで、この関数は OVER 句を使って窓関数としても呼べると書いている。移動の窓で推定の数を並べる形は、そのまま書ける。結果は、ほかの呼び方と同じく BIGINT である。
違う選択肢
「書けない。近似の集計は GROUP BY の中だけで使える」… ページは、OVER 句を付けて窓関数として呼べると書いている。GROUP BY の集計の中でしか使えない、という決まりは書かれていない。
「窓の中では count(DISTINCT) に替えて書く」… ページは、この関数そのものを OVER 句を付けて窓関数として呼べると書いている。窓で使うために別の関数へ替える必要は書かれていない。
「窓の中でも書けるが、relativeSD の指定が要る」… relativeSD は許す相対標準偏差の最大値を決める、省ける引数である。ページは、窓関数として呼ぶときにこれが要るとは書いていない。
窓で呼べる集計の関数
count のリファレンスにも、同じく OVER 句で窓関数として呼べるという一文がある。集計の関数のリファレンスは、窓で呼べるかを Syntax の直後に書くことが多いので、窓の中で使いたいときはそこを確かめる。expr には、等しいかどうかを決められる型なら何でも渡せる。
Databricks Certified Data Analyst Associateの演習アプリ(無料10問・全問は購入で)へ