QuickSight:如何用条件语句计算指定视频行的时长总和
视频时长统计解决方案
已验证的总时长计算(正确)
你已经实现的所有视频总时长计算逻辑是对的:
C_total_videos_duration = sum(max({video_duration}, [filename]))
核心逻辑是先按filename分组提取唯一的视频时长(同文件所有行时长一致,max等价于直接取该固定值),再对所有文件的时长求和。
带事件视频总时长的正确计算
要统计存在非空event的视频总时长,需先判断每个视频文件是否有至少一行的event非空,再对符合条件的文件时长求和,正确公式如下:
C_event_videos_duration = sumIf(max({video_duration}, [filename]), any(isNotNull({event}), [filename]))
公式逻辑拆解
max({video_duration}, [filename]):为每个filename提取唯一的视频时长any(isNotNull({event}), [filename]):按filename分组,判断该文件下是否存在至少一行的event非空,返回布尔值sumIf(..., ...):仅对满足“存在非空event”的文件时长进行求和
之前报错的原因说明
sumIf(max({video_duration}, [{filename}]), isNotNull({event})):isNotNull({event})是行级判断,而max(...)是组级聚合,两者维度不匹配,LAC不允许这种跨维度的直接关联sum(maxIf({video_duration}, isNotNull({event})), [{filename}]):LAC禁止聚合函数嵌套(maxIf属于聚合函数,外层再套sum加分组属于非法嵌套)sumOver(...):该公式会按filename输出拆分后的结果,若要汇总只需在外层再套一层sum,但不如上述sumIf+any的写法高效简洁
内容的提问来源于stack exchange,提问作者Noy Rahmani
相关产品推荐
相关产品推荐

