如何解决如何在 Looker 中按日期计算状态变化?
我在 BigQuery 中有一个任务,其中包含创建日期和上次修改日期。如果可能,我希望能够在同一个表中按日期报告任务打开和任务关闭事件的数量。
view: tasks {
derived_table: {
sql:
SELECT *
FROM UNnesT(ARRAY<STRUCT<CREATED_DATE DATE,LAST_MODIFIED DATE,ID INT64,STATE STRING>>[
('2020-12-01','2020-12-01',1,"OPEN"),('2020-12-01','2020-12-03',2,"CLOSED"),('2020-12-02',3,('2020-12-03','2020-12-05',4,('2020-12-05',5,"CLOSED")])
;;
}
dimension_group: created {
type: time
datatype: date
sql: ${TABLE}.created_date ;;
}
dimension_group: last_modified {
type: time
datatype: date
sql: ${TABLE}.last_modified ;;
}
dimension: id {
type: number
}
dimension: state {
type: string
}
measure: number_of_tasks {
type: count_distinct
sql: ${id} ;;
}
measure: number_of_open_tasks {
type: count_distinct
sql: ${id} ;;
filters: {
field: "state"
value: "OPEN"
}
}
measure: number_of_closed_tasks {
type: count_distinct
sql: ${id} ;;
filters: {
field: "state"
value: "CLOSED"
}
}
}
explore: tasks {}
我可以使用创建日期获取打开的任务数。
我可以通过对任务进行计数来获得关闭的任务数,其中最后修改日期在聚合期且状态为关闭,并带有过滤的度量。
但是,如果我尝试将这些组合在一个表中,我会为每个日期组合获得一行。
如何按日期计算任务状态的变化?
解决方法
一位同事提出了一个解决方案。将任务表堆叠在其自身上会为每个任务创建(最多)两行。
view: tasks {
derived_table: {
sql:
WITH tab AS (
SELECT *
FROM UNNEST(ARRAY<STRUCT<CREATED_DATE DATE,LAST_MODIFIED DATE,ID INT64,STATE STRING>>[
('2020-12-01','2020-12-01',1,"OPEN"),('2020-12-01','2020-12-03',2,"CLOSED"),('2020-12-02',3,('2020-12-03','2020-12-05',4,('2020-12-05',5,"CLOSED")])
)
SELECT *,1 open_count,0 closed_count,created_date AS action_date
FROM tab
UNION DISTINCT
SELECT *,0 open_count,1 closed_count,last_modified AS action_date
FROM tab
WHERE state = "CLOSED"
;;
}
dimension_group: created {
type: time
datatype: date
sql: ${TABLE}.created_date ;;
}
dimension_group: last_modified {
type: time
datatype: date
sql: ${TABLE}.last_modified ;;
}
dimension_group: action {
type: time
datatype: date
sql: ${TABLE}.action_date ;;
}
dimension: id {
type: number
}
dimension: state {
type: string
}
dimension: open_count {
type: number
hidden: yes
}
dimension: closed_count {
type: number
hidden: yes
}
measure: number_opened{
type: sum
sql: ${open_count} ;;
}
measure: number_closed {
type: sum
sql: ${closed_count} ;;
}
}
explore: tasks {}
然后可以计算打开和关闭的标签。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。