2017-12-21 8 views
0

私は仕事でスーパーセットを実装していましたが、これまでのところ好きです。しかし、私はそのようなテーブルを持っています:Apache Supersetでカスタムメトリックを定義するにはどうすればよいですか?

name,age,gender 
John,42,M 
Sally,38,F 
Patricia,27,F 
Steven,29,M 
Amanda,51,F 

若い人の数を数え、それぞれの名前に対して新しいメトリックを定義します。私のデータはMySQLdatabaseである、と私は一人のために、私はこのようにクエリを書くことができているとします。たとえば、用

SELECT COUNT(DISTINCT name) from users where users.age <= 42; 

、ジョンの行。だから、私はどのようにテーブル全体のためにこれを連続して行うのですか?

+0

このテーブルにはいくつのレコードがありますか?標準的なアプローチは、年齢で<=演算子を使用して自己結合することです。大きなテーブルでは、これは大きな結果をもたらすでしょう。 – Shadow

+0

今は、行ごとに7800行と約80列です。 – Vinay87

答えて

0

あなたのクエリは、影のポイントへの

select *, 
    (select count(distinct all_users.name) from users all_users where all_users.age <= users.age) 
FROM users 

のようになります - これは、大規模なデータセット上で実行するのは非常に高価になるだろう。

これが当てはまる場合は、年齢の指標を設定するか、その数をすべて非正規化することをお勧めします。挿入が遅くなるというトレードオフです。

関連する問題