0
配列から値をフィルタリングしようとしています。値は保持すべき情報は別のテーブルにあります。現時点では他のテーブルに依存するフィルタ配列
output
________________________
| id | filtered_values |
------------------------
| 1 | [b] |
| 2 | [e, f] |
| 3 | [] |
------------------------
、私は次のクエリを使用しています:
table_a table_b
___________________ ___________
| id | values | | keyword |
------------------- -----------
| 1 | [a, b, c] | | b |
| 2 | [d, e, f] | | e |
| 3 | [a, g] | | f |
------------------- -----------
私は次の出力を期待
SELECT
id,
array_intersect(ta.values, tb.filter_keywords) AS filtered_values -- brickhouse UDF
FROM
table_a ta
CROSS JOIN (
SELECT
collect_set(keyword) as filter_keywords
FROM (
SELECT
"dummy" as grouping_dummy,
keyword
FROM
table_b
) tmp
GROUP BY
grouping_dummy
)
table_aはカップル万行を持って、table_bは1000の未満の行が含まれています。 1つのレデューサーしか使用していないので、クロス結合がボトルネックになっていると思います。
このクエリを最適化する方法はありますか?
ありがとうございます!
チェック更新の回答 –