`
jianchen
  • 浏览: 343030 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

聚集导航出错

    博客分类:
  • BI
阅读更多

今天遇到一件很奇怪的事情:

同样的报表,在访问时,数据差异很大。

唯一做的变更是,之前底层走的是tsa_fact_punish_rstb表。现在走的是tsa_fact_punish_rdys表。

希望利用biee模型成的聚集导航,当查询特定的维度时,走相应的聚合表。

 

一开始怀疑,是tsa_fact_punish_rdys表的计算有问题,但是实际上该表是利用kettle进行简单的聚合得到的。

反复查了几次,发现底层的数据没有问题。

 

后来只能怀疑是前台的报表bug了。查看发出的sql分析,基本上关联的表是差不多的。后来仔细分析,发现在前台报表层面虽然增加了bc_type=1的判断,但是发出的sql里,走tsa_fact_punish_rdys表的查询语句,竟然没有该条件限制。导致算出来的数据偏大。

正确的sql如下:

select T4707.year_id as c1,
     T4707.month_id as c2,
     T4707.date_id as c3,
     T4635.cat_level_1_name as c4,
     case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end  as c5,
     sum(T17117.all_new_num) as c6
from 
     tsa_dim_time T4707,
     tsa_dim_punish_reason T4645,
     tsa_dim_product_category T4635,
     tsa_fact_punish_rstb T17117
where  ( T4635.cat_id = T17117.product_category_id and T4645.reason_id = T17117.reason_id and T4707.date_id = T17117.date_id and T17117.bc_type = 1 and T4635.cat_level_1_name <> '手机号码/套餐/增值业务' and T4635.cat_level_1_name <> '移动/联通/电信充值中心' and T4635.cat_level_1_name <> '网游垂直市场根类目' and T4635.cat_level_1_name <> '网游装备/游戏币/帐号/代练' and T4635.cat_level_1_name <> '网络游戏点卡' and T4635.cat_level_1_name <> '腾讯QQ专区' and T4645.reason_2_name <> '消费者保障服务(商城,虚拟)' and T4645.reason_2_name <> '消费者保障服务(集市,虚拟)' and case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end  <> '其他' and 0 < T4635.status and T4707.date_id between {d '2011-07-18'} and {d '2011-07-24'} and T17117.date_id between {d '2011-07-18'} and {d '2011-07-24'} ) 
group by T4635.cat_level_1_name, T4707.date_id, T4707.month_id, T4707.year_id, case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end 

 

错误的sql:

select T4707.year_id as c1,
     T4707.month_id as c2,
     T4707.date_id as c3,
     T4635.cat_level_1_name as c4,
     case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end  as c5,
     sum(T21533.all_new_num) as c6
from 
     tsa_dim_time T4707,
     tsa_dim_punish_reason T4645,
     tsa_dim_product_category T4635,
     tsa_fact_punish_rdys T21533
where  ( T4635.cat_id = T21533.product_category_id and T4645.reason_id = T21533.reason_id and T4707.date_id = T21533.date_id and T4635.cat_level_1_name <> '手机号码/套餐/增值业务' and T4635.cat_level_1_name <> '移动/联通/电信充值中心' and T4635.cat_level_1_name <> '网游垂直市场根类目' and T4635.cat_level_1_name <> '网游装备/游戏币/帐号/代练' and T4635.cat_level_1_name <> '网络游戏点卡' and T4645.reason_2_name <> '消费者保障服务(商城,虚拟)' and T4645.reason_2_name <> '消费者保障服务(集市,虚拟)' and case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end  <> '其他' and T4635.cat_level_1_name <> '腾讯QQ专区' and 0 < T4635.status and T4707.date_id between {d '2011-07-18'} and {d '2011-07-24'} and T21533.date_id between {d '2011-07-18'} and {d '2011-07-24'} ) 
group by T4635.cat_level_1_name, T4707.date_id, T4707.month_id, T4707.year_id, case  when T4645.reason_1_name in ('售后保障服务', '未收到货') then '售后投诉' when T4645.reason_1_name in ('延迟发货', '违背承诺') then '规则类投诉' else '其他' end 

 以上两条sql的不同点,除了走的聚合表不同外,就是条件bc_type的区别了。

 

初步分析:tsa_fact_punish_rdys表里没有bc_type字段,在聚集导航判断时,可以走这张表,竟然把这个条件直接去掉了。之前以为,没有字段映射到的话,会走符合条件的另外一个表的。这还是第一次遇到这种情况。有点诡异。

 

解决方案:在tsa_fact_punish_rdys表中增加bc_type字段,应该可以保证限制条件不丢。

 

后面再分析下,为什么会出现这种情况?

分享到:
评论

相关推荐

    SQL Server 索引结构及其使用(聚集索引与非聚集索引)

    "SQL Server 索引结构及其使用(聚集索引与非聚集索引)" 数据库索引是数据库性能优化的关键技术之一。SQL Server 提供了两种索引:聚集索引(clustered index)和非聚集索引(nonclustered index)。本文将详细介绍...

    索引介绍聚集索引和非聚集索引

    ### 索引介绍:聚集索引与非聚集索引 #### 一、索引的基本概念 在数据库中,索引是一种特殊的文件结构,它的主要目的是为了提高数据检索的速度。索引通过创建一种数据结构(例如B树)来实现这一点,这种结构允许...

    聚集索引和非聚集索引的区别

    聚集索引和非聚集索引是数据库管理系统中两种重要的索引类型,它们在数据库查询优化中扮演着关键角色。理解这两种索引的区别对于优化数据库性能至关重要。 首先,聚集索引(Clustered Index)决定了表中数据的实际...

    数据库非聚集索引 聚集索引 模式 索引

    本文将深入探讨数据库中的非聚集索引、聚集索引以及索引模式的概念,并分析它们之间的区别。 首先,让我们了解一下**非聚集索引**。非聚集索引在数据库中不按照数据的实际物理顺序存储。每个非聚集索引条目包含键值...

    matlab 求聚集系数,平均距离等等

    这里我们将深入探讨Matlab在处理复杂网络时如何计算聚集系数和平均距离,这两个重要指标。 首先,让我们理解这两个概念: 1. **聚集系数(Clustering Coefficient)**:聚集系数是衡量一个节点的邻居节点之间连接...

    2004-2020年 全国地级市绿色经济效益与人口聚集、经济聚集、产业聚集匹配数据

    人口聚集、经济聚集、产业聚集是指大量人口、经济活动、同一产业或者相关产业在特定区域内集中的现象。这种聚集可以是由于多种原因,例如就业机会、教育资源或良好的生活环境。 一般反应某些地区具有优越的地理位置...

    产业聚集理论研究述评_刘军

    【产业聚集理论】是经济学领域的一个重要分支,探讨的是企业为何倾向于在同一地区集中,以及这种聚集带来的经济效应。产业聚集的现象在现代社会经济活动中十分普遍,它不仅是一个历史久远的经济现象,也是当今世界...

    聚集系数的简单MATLAB实现

    复杂网络中聚集系数的MATLAB实现方法,ClusteringCoefficient

    基于位置服务的多对象聚集问题

    它通过获取用户或设备的地理位置,结合其他数据(如时间、环境条件等),提供包括但不限于地图导航、位置共享、附近商家搜索、紧急救援等多种服务。LBS技术的发展依赖于GPS全球定位系统、Wi-Fi定位、基站定位等多种...

    学校常见传染病聚集性疫情判定参考标准.pdf

    这份"学校常见传染病聚集性疫情判定参考标准"为教育机构提供了识别和应对传染病爆发的重要指导,旨在及时发现并控制疫情,保护学生和教职员工的健康。 1. 手足口病:该病由多种肠道病毒引起,主要症状包括发热、...

    昆明产业聚集带动人口聚集的分析

    昆明产业聚集带动人口聚集的分析涉及了人口经济学、产业经济学和地理经济学等多个领域的知识,主要探讨了产业聚集与人口聚集之间相互作用的机制和特点。分析了昆明市产业聚集的分类、特征及其对人口流动和聚集的影响...

    基于聚集密度的约束多目标进化算法

    对基于群体聚类的约束多目标进化算法进行了改进,引入了聚集密度以度量群体中个体间的关系,保持种群的多样性。其基本思想为:首先将初始群体按多判据聚类方法分为适应度值不同的四类,然后计算类内群体中个体的聚集密度...

    MySQL索引 聚集索引

    MySQL索引 聚集索引 如果你想了解MySQL索引查询优化,你首先应该对MySQL数据组织结构、B-Tree索引、聚集索引,次要索引有一定的了解,才能够更好地理解MySQL查询优化行为。这里主要探讨MySQL InnoDB的聚集索引。

    论文研究 - 生物样品中蛋白质聚集体的存在与自然衰老过程和与年龄有关的疾病

    已知生物样品中蛋白质聚集体的存在与自然衰老过程和与年龄有关的疾病有关。 这项技术研究的目的是评估傅立叶变换红外光谱法鉴定含有高水平蛋白质聚集体的酿酒酵母中蛋白质聚集体的可能性。 我们获取了中红外范围...

    基于MapReduce的大数据在线聚集优化设计.pdf

    MapReduce作为一种分布式计算框架,被广泛应用于大数据处理领域,它能够处理PB级别的数据规模,有效地支持数据的在线聚集优化。然而,MapReduce在执行大数据在线聚集任务时往往存在执行时间长、执行性能较差以及延迟...

    SQLServer聚集索引与非聚集索引讲解[借鉴].pdf

    "SQLServer聚集索引与非聚集索引讲解" 本文主要讲解了SQL Server中的聚集索引和非聚集索引的概念、原理和应用场景。聚集索引(Clustered Index)和非聚集索引(Non-Clustered Index)是SQL Server中两种不同的索引...

    插件_Flock Box聚集行为.zip

    在Unity游戏开发中,"插件_Flock Box聚集行为.zip"是一个非常实用的工具,它提供了集成的聚集行为(也称为群集行为或Boids算法)功能。这种插件允许开发者轻松地创建出类似鸟群、鱼群或者其它群体动物的行为效果,为...

    群机器人自组织聚集行为及协同围捕研究.pdf

    聚集度高意味着机器人能够有效地集中在某一区域,而均匀度高则表示在聚集的区域里,机器人的分布较为均衡。这些评价指标有助于科研人员了解和改进群机器人的自组织聚集行为。 协同围捕是一种多机器人系统通过协调...

Global site tag (gtag.js) - Google Analytics