过滤 looker 磁贴以显示数据集中最近 7 天的报告?

Filter looker tile to show last 7 reported days in dataset?

我如何过滤到数据集中最后 7 个“REPORTED”天数。

简单地过滤过去 7 天是行不通的,因为报告的天数并不总是连续的。 我不能使用最近 10 天之类的东西来捕捉它们,因为我需要将集合限制为 7。

假设我的数据集中有一个日期列,如下所示:

COMPLETED_DATE:

05/09/2022
05/06/2022
05/05/2022
05/04/2022
05/03/2022
04/20/2022
04/18/2022
04/17/2022
04/16/2022

我需要 looker 来显示与最近 7 个报告日期相关的结果,如下所示:

COMPLETED_DATE:

05/09/2022
05/06/2022
05/05/2022
05/04/2022
05/03/2022
04/20/2022
04/18/2022

这是我可以使用内置过滤器完成的事情吗?还是我需要编写一些 LookML 才能完成?

我想我可以写一个维度来做到这一点。我在网上找到了最后一次过滤的维度。我不确定如何改写它以过滤过去 7 天。

dimension: latest_date { type: yesno sql: ${created_date} = max(${created_date}) ;; }

Source

您无需更改 LookML 即可执行此操作:

  • 创建探索并按 COMPLETED_DATE
  • 排序
  • 创建一个名为 rank 的辅助 Table 计算,并将其定义为 max(row()) - row() + 1。此列将从最近到最旧的报告编号
  • 创建过滤器以仅显示rank 小于或等于所需报告数量
  • 的报告

根据您对报告日期的了解,您有两种方法。

1.

  • 如果您知道最后一份报告至少在 X 天前 => 按“X 天前”过滤您的磁贴
  • 否则 => 不按日期过滤(查询所有内容)
  1. 按日期排序
  2. 将行限制设置为 7

通过编辑查询数据以包含排名行解决了该问题。 这让我们可以根据此列过滤排名。

这是通过 looker 论坛上的一些回复解决的:

how-to-filter-on-last-7-available-dates

我的解决方案如下:

原来删除“按部分分区”解决了计数问题。 我看到一个错误说 OVER 子句需要 ORDER_BY 并且出于某种原因促使我检查如果我删除 PARTITION BY 部分它会说什么,我删除了它。无论出于何种原因,现在使用 ROW_NUMBERRANK 显示的计数没有问题。

Select received_date, ROW_NUMBER() OVER(ORDER BY received_date DESC) from
(SELECT distinct CAST(received_time as DATE) received_date FROM TABLE_NAME) s
WHERE received_date <= '2022-04-12'
ORDER BY received_date  DESC

Select received_date, RANK() OVER(ORDER BY received_date DESC) from
(SELECT distinct CAST(received_time as DATE) received_date FROM TABLE_NAME) s
WHERE received_date <= '2022-04-12'
ORDER BY received_date  DESC

两者的结果是:

received_date   RANK
2022-04-12      1
2022-04-11      2
2022-04-10      3
2022-04-08      4
2022-04-07      5
2022-04-06      6
2022-04-05      7

如您所见,我得到了我正在寻找的计数,因为我们在可用日期中没有 04-09 日期,计数移至下一个日期。