You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks中通过store_id获取表视图最新visit_date的问题

问题解决:Databricks中获取每个store_id的最新visit_date

原查询的问题点

  1. 窗口函数拼写错误:你写的RPW_NUMBER()是笔误,正确的函数名是ROW_NUMBER(),拼写错误会导致排序分区逻辑完全失效,无法正确标记最新日期。
  2. 递归视图依赖:创建视图时直接从目标视图abc_gold.student_vw查询,形成循环依赖,Databricks无法正确处理这种逻辑,必须从底层原始表获取数据。
  3. 可选优化:SELECT *会把标记用的latest_date列也包含到视图中,若不需要可明确指定所需列。

修正后的查询示例

CREATE OR REPLACE VIEW abc_gold.student_vw
AS
SELECT store_id, visit_date
from (
    SELECT store_id, visit_date
        , ROW_NUMBER() OVER (PARTITION BY store_id ORDER BY TO_DATE(visit_date, 'dd-MM-yyyy') DESC) AS latest_date
    FROM abc_gold.student  -- 替换为你的原始数据表名
) L
WHERE L.latest_date = 1

额外说明

如果你的visit_date是字符串类型(比如示例中的01-02-2024),直接用字符串排序可能会出现逻辑错误(比如10-01-2024会排在02-02-2024前面),所以建议用TO_DATE(visit_date, 'dd-MM-yyyy')转换为日期类型后再排序,确保日期顺序正确。

效果验证

针对你的示例数据:

store_id, visit_date
1         01-02-2024
1         02-02-2024

修正后的查询会返回唯一记录:

store_id, visit_date
1         02-02-2024

内容的提问来源于stack exchange,提问作者Chinnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:42:35