我已經在GROUP BY語句中成功使用了複雜類型(在我的案例中是map)。 但是,當我試圖做使用映射在PARTITION BY語句我得到一個錯誤:在使用窗口函數時,是否在PARTITION BY語句中配置了複雜類型?
SELECT *, MIN(dt) OVER(PARTITION BY some_map) FROM some_table
FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns. Also check for circular dependencies. Underlying error: Partition Expression (TOK_TABLE_OR_COL query_params) is not a comparable expression
所以不支持蜂巢複合型的PARTITION BY語句? 如果沒有,如果我需要保留所有其他列值(我不能執行GROUP BY),我該怎麼辦?
我的意思是?例如,我有一個表user_queries
:
user_id|query_params |result_position|dt
1 |{'text':'query1'} |0 |2017-04-01 10:00
1 |{'text':'query1'} |1 |2017-04-01 12:00
1 |{'text':'query2'} |0 |2017-04-01 13:00
2 |{'text':'query1'} |0 |2017-04-01 09:00
我執行此查詢:
SELECT
user_id,
query_params,
position,
MIN(dt) OVER(PARTITION BY user_id, query_params) AS dt
FROM user_queries
而且我想這(看在2擋線DT):
user_id|query_params |result_position|dt
1 |{'text':'query1'} |0 |2017-04-01 10:00
1 |{'text':'query1'} |1 |2017-04-01 10:00
1 |{'text':'query2'} |0 |2017-04-01 13:00
2 |{'text':'query1'} |0 |2017-04-01 09:00
無論是否有位置,這似乎不合理 –
@Dudu馬可維茲你能解釋我爲什麼?)例如,我hav有很多領域的地圖。 GROUP BY知道如果所有對應的相等鍵值相等,則兩個映射相等。我不想枚舉所有地圖的值,所以這不合理嗎? –
它與''by *'(僞代碼)類似。你能舉一個具體的例子嗎? –