一种数据建模方法及设备与流程

文档序号:12786363阅读:271来源:国知局
一种数据建模方法及设备与流程
本申请涉及通信
技术领域
,特别涉及一种数据建模方法。本申请同时还涉及一种数据建模设备。
背景技术
:随着网络技术的不断发展,数据库已经在信息
技术领域
有了广泛的应用。在社会生活的各个部门几乎都有各种各样的数据库保存着与人们的生活息息相关的各种数据。为了对数据进行统一的管理以提供更好的服务,数据仓库应运而生。数据仓库是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策(DecisionMakingSupport),出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。数据建模是建设数据仓库的重要过程之一,数据建模指的是对现实世界各类数据的抽象组织,确定数据仓库需管辖的范围、数据的组织形式等直至转化成现实的数据仓库。通过将数据仓库模型建设进行工具化处理,可以解决业界长期以来经验建模和人肉建模的问题,同时在集团内部可以更好地服务集团数据公共层建设和优化。在进行数据建模的过程中,对于业务不了解的数据模型师一般首先会进行下游使用情况调研,随后再根据调研结果进行数据建模。由于对下游使用情况调研需要耗费大量的人力,因此该方式效率低且调研不充分,从而导致事倍功半。而对于业务了解的数据模型师一般采用基于经验的建模方式。然而该方式由于没有数据化的指导,因此无法保证建模的准确度。由此可见,如何在保证准确性的前提下快速进行数据建模处理,成为本领域技术人员亟待解决的技术问题。技术实现要素:本申请提供了一种数据建模方法,用以提高数据建模的准确定以及建模效率。该方法包括:根据各来源表的元数据确定用于数据建模的主表;根据所述主表的业务含义确定通过所述数据建模生成的目标表的类型;根据所述主表的元数据确定用于数据建模的从表;从所述主表以及所述从表中选择用于数据建模的字段;根据所述主表、所述从表以及所述字段进行数据建模,生成所述目标表。优选地,根据所述主表的业务含义确定通过所述数据建模生成的目标表的类型,具体为:若根据所述主表的业务含义确定所述目标表的类型为所述事实表,根据所述主表的元数据确定所述事实表的具体类型,所述具体类型包括:事务型事实表、周期快照事实表以及累积快照事实表;若根据所述主表的业务含义确定所述目标表的类型为所述维表,根据所述主表的元数据确定所述维表是否需要进行拆分以及拆分方式,所述拆分方式包括:水平拆分以及垂直拆分。优选地,所述元数据包括下游使用信息,根据所述主表的元数据确定用于数据建模的从表,具体为:根据所述下游使用信息获取与所述主表具有关联的数据表;获取所述主表与各所述数据表之间的关联信息,并将与预设的选择策略匹配的关联信息对应的数据表作为所述从表。优选地,从所述主表以及所述从表中选择用于数据建模的字段,具体为:根据所述元数据分别获取所述主表以及所述从表的字段使用情况信息;根据所述字段使用情况信息选取所述字段;其中,所述字段使用情况信息至少包括:字段查询次数、过滤条件次数、关联次数、聚合统计次数、空值占比、枚举值占比。优选地,在根据所述主表、所述从表以及所述字段进行数据建模之前,还包括:当所述目标表为所述事务型事实表时,根据所述下游使用信息对所述主表的业务过程进行打标,确定生成单事件事实表或多事件事实表;当所述目标表为所述累积快照事实表,按照所述事务型事实表对所述主表的业务过程进行打标,并将当前用于所述数据建模的其他事实表的业务过程进行打标;当所述目标表为所述维表且所述拆分方式为所述水平拆分时,根据所述主表的字段使用情况信息将所述主表水平拆分为多个维表;当所述目标表为所述维表且所述拆分方式为所述垂直拆分时,根据所述主表与各所述从表之间的关联信息,将业务变化高于预设阈值的从表与所述主表通过所述数据建模生成核心维表,以及将业务变化不高于预设阈值的从表通过所述数据建模生成自定义维表。相应地,本申请还提出了一种数据建模设备,包括:第一确定模块,根据各来源表的元数据确定用于数据建模的主表;第二确定模块,根据所述主表的业务含义确定通过所述数据建模生成的目标表的类型;第三确定模块,根据所述主表的元数据确定用于数据建模的从表;选择模块,从所述主表以及所述从表中选择用于数据建模的字段;建模模块,对所述主表、所述从表以及所述字段进行数据建模,生成所 述目标表。优选地,所述第二确定模块具体用于:若根据所述主表的业务含义确定所述目标表的类型为所述事实表,根据所述主表的元数据确定所述事实表的具体类型,所述具体类型包括:事务型事实表、周期快照事实表以及累积快照事实表;若根据所述主表的业务含义确定所述目标表的类型为所述维表,根据所述主表的元数据确定所述维表是否需要进行拆分以及拆分方式,所述拆分方式包括:水平拆分以及垂直拆分。优选地,所述元数据包括下游使用信息,所述第三确定模块具体用于:根据所述下游使用信息获取与所述主表具有关联的数据表;获取所述主表与各所述数据表之间的关联信息,并将与预设的选择策略匹配的关联信息对应的数据表作为所述从表。优选地,所述选择模块具体用于:根据所述元数据分别获取所述主表以及所述从表的字段使用情况信息;根据所述字段使用情况信息选取所述字段;其中,所述字段使用情况信息至少包括:字段查询次数、过滤条件次数、关联次数、聚合统计次数、空值占比、枚举值占比。优选地,还包括处理模块,其中:当所述目标表为所述事务型事实表时,所述处理模块根据所述下游使用信息对所述主表的业务过程进行打标,确定生成单事件事实表或多事件事实表;当所述目标表为所述累积快照事实表,所述处理模块按照所述事务型事实表对所述主表的业务过程进行打标,并将当前用于所述数据建模的其他事实表的业务过程进行打标;当所述目标表为所述维表且所述拆分方式为所述水平拆分时,所述处理 模块根据所述主表的字段使用情况信息将所述主表水平拆分为多个维表;当所述目标表为所述维表且所述拆分方式为所述垂直拆分时,根据所述主表与各所述从表之间的关联信息,所述处理模块将业务变化高于预设阈值的从表与所述主表通过所述数据建模生成核心维表,以及将业务变化不高于预设阈值的从表通过所述数据建模生成自定义维表。由此可见,通过应用本申请的技术方案,在根据各来源表的元数据确定用于数据建模的主表以及根据主表的业务含义确定通过数据建模生成的目标表的类型后,根据主表的元数据确定用于数据建模的从表,并从主表以及从表中选择用于数据建模的字段,最后根据主表、从表以及字段进行数据建模,生成所述目标表。从而能够基于数据表的元数据准确地进行数据建模,保证了数据建模结果的准确性以及效率。附图说明图1为本申请提出的一种数据建模方法的流程示意图;图2为本申请具体实施例中来源表与目标表的关系示意图;图3为本申请具体实施例中主要模块示意图;图4为本申请具体实施例中元数据加工模块的结构示意图;图5为本申请具体实施例中进行数据建模的流程示意图;图6为本申请提出的一种数据建模设备的结构示意图。具体实施方式在现有的数据仓库建模领域中,数据仓库模型设计主要包括“Inmon的第三范式建模”以及“Kimball的维度建模”这两个流派。这两种模型设计理论和方法针对某个具体的数据仓库的模型设计的产出结果最终都可以通过ER图或类ER图的方式来展现,此外还存在DMDWDesigner该用于数据仓库建模的 独立工具产品。这些技术均可在确定了主表以及从表的情况下执行数据建模的过程,然而正如
背景技术
所述,这些建模方式没有融入数据仓库建模的理论和方法,而且在建模过程没有数据化的指导(主要是经验建模的方式),导致了数据建模结果的不准确。有鉴于以上技术问题,本申请提出了一种数据建模方法,如图1所示,该方法包括如下步骤:S101,根据各来源表的元数据确定用于数据建模的主表。主从表是一种数据关系模型,主表为在数据库中建立的表格,其中存在主键(primarykey)用于与其它表相关联,并且作为在主表中的唯一性标识。从表则是以主表的主键(primarykey)值为外键(ForeignKey)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。其中,从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。主表可用于存储主要信息,如客户资料(客户编号,客户名称,客户公司,客户单位等),从表用来存储客户扩展信息(客户订单信息,客户地址信息,客户联系方式信息等)。在本申请的技术方案中,由于需要针对多个数据表通过数据建模的方式生成目标表,因此首先需要在多个当前的数据表(又称为来源表)中选择主表。举例来说,目标表可能来源于1~m张表,即来源表1、来源表2、......、来源表m,假设来源表1是我们选择的主表,那其他来源表(来源表2、......、来源表m)即是我们选择的从表,一般来说,数据建模过程中所涉及的主表只有一张,具体过程如图2所示。S102,根据所述主表的业务含义确定通过所述数据建模生成的目标表的类型。本步骤用于确定目标表的类型,从大体上来说,目标表的类型包括事实 表以及维表两类。其各自特点如下:(1)事实表每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如现金登记事务所产生的数据,事实数据表通常包含大量的行。事实数据表的主要特点是包含数字数据(事实),并且这些数字信息可以汇总,以提供有关单位作为历史的数据,每个事实数据表包含一个由多个部分组成的索引,该索引包含作为外键的相关性维度表的主键。事实数据表不包含描述性的信息,也不包含除数字度量字段及使事实与维度表中对应项的相关索引字段之外的任何数据。包含在事实数据表中的“度量值”有两种:一种是可以累计的度量值,另一种是非累计的度量值。最有用的度量值是可累计的度量值,其累计起来的数字是非常有意义的。用户可以通过累计度量值获得汇总信息,例如,可以汇总具体时间段内一组商店的特定商品的销售情况。非累计的度量值也可以用于事实数据表,例如在一座大厦的不同位置测量温度时,如果将大厦中所有不同位置的温度累加是没有意义的,但是求平均值是有意义的。一个事实数据表都要和一个或多个维度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。(2)维度表维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。例如包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。在维度表中,每个表都包含独立于其他维度表的事实特性,例如,客户 维度表包含有关客户的数据。维度表中的列字段可以将信息分为不同层次的结构级。基于上述描述,若需要在该步骤中进行更加细致的划分,那么在目标表是事实表的情况下,还可进一步确定是事物型事实表、周期快照事实表还是累积快照事实表;如果目标表是维表,可进一步确定是水平拆分成并列的多张维表,还是垂直拆分成核心和自定义维表,还是不做拆分。在本申请的优选实施例中,处理方式如下:(1)若根据所述主表的业务含义确定所述目标表的类型为所述事实表,根据所述主表的元数据确定所述事实表的具体类型,所述具体类型包括:事务型事实表、周期快照事实表以及累积快照事实表;(2)若根据所述主表的业务含义确定所述目标表的类型为所述维表,根据所述主表的元数据确定所述维表是否需要进行拆分以及拆分方式,所述拆分方式包括:水平拆分以及垂直拆分。S103,根据所述主表的元数据确定用于数据建模的从表。由于数据建模的目的在于将具有关联的数据表进行聚合以及关联,因此在本申请的优选实施例中,将主要基于元数据中的下游使用信息进行从表的选择,具体地,首先根据所述下游使用信息获取与所述主表具有关联的数据表,随后获取所述主表与各所述数据表之间的关联信息,并将与预设的选择策略匹配的关联信息对应的数据表作为所述从表。S104,从所述主表以及所述从表中选择用于数据建模的字段。基于S103中所选的从表,该步骤通过主表以及从表中各个字段的信息选择需要用于数据建模的字段。在本申请的优选实施例中,首先根据所述元数据分别获取所述主表以及所述从表的字段使用情况信息,随后再根据所述字 段使用情况信息选取所述字段。基于数据建模中可能需要考虑使用的因素,字段使用情况信息至少应包括:字段查询次数、过滤条件次数、关联次数、聚合统计次数、空值占比、枚举值占比。在此基础上技术人员可进行进一步的拓展,这些都属于本申请的保护范围。S105,根据所述主表、所述从表以及所述字段进行数据建模,生成所述目标表。如之前所述,目标表是事实表还是维表一般根据主表的业务含义确定,举例来说,假设主表的业务含义是某事件(例如某人在某时间于某地点发生了什么事件),则目标表一般为事实表;如主表的业务含义是某实体(例如商品、买家等),则目标表一般为维表。。相应地,确定目标表是事实表之后,那么需要确定目标表是事物型事实表、周期快照事实表还是累积快照事实表。而在确定目标表是维表之后,那么需要确定是否对主表进行拆分;是水平拆分成并列的多张维表,还是垂直拆分成核心和自定义维表,还是不做拆分。基于上述情况,在最终进行该步骤之前,本申请的优选实施例针对不同的情况提出了相应的处理方式,具体如下:(1)当所述目标表为所述事务型事实表时,根据所述下游使用信息对所述主表的业务过程进行打标,确定生成单事件事实表或多事件事实表;(2)当所述目标表为所述累积快照事实表,按照所述事务型事实表对所述主表的业务过程进行打标,并将当前用于所述数据建模的其他事实表的业务过程进行打标。在本申请的具体实施例中,对于事务型事实表,需要对主表的业务过程打标,确定生成单事件事实表或多事件事实表。其中业务过程一般都是源系 统的自然业务活动,比如交易,一般会经过如下业务过程,下单、支付、交易完成等。业务过程打标一般依据的元数据是字段下游使用情况,主要是字段的过滤条件次数;业务过程字段一般都是时间字段,下游使用时作为过滤条件较多的,则本申请主要关注的业务过程。对于周期快照事实表,需要对主表的业务过程打标,标示此次建模的业务过程之后,进入下一步的处理。对于累积快照事实表,首先按照事务型事实表对主表进行业务过程打标;然后引入本次建模所涉及的其他事实表,同样根据元数据对引入的其它事实表打标;对所有涉及的业务过程打标完成后,进入下一步建模。(3)当所述目标表为所述维表且所述拆分方式为所述水平拆分时,根据所述主表的字段使用情况信息将所述主表水平拆分为多个维表;(4)当所述目标表为所述维表且所述拆分方式为所述垂直拆分时,根据所述主表与各所述从表之间的关联信息,将业务变化高于预设阈值的从表与所述主表通过所述数据建模生成核心维表,以及将业务变化不高于预设阈值的从表通过所述数据建模生成自定义维表。水平拆分一般依据的元数据是字段下游使用情况,主要是字段的过滤条件次数。如多个BU共用商品表,不同BU使用时,都对BU字段进行过滤,仅关系自己BU的商品,因此本具体实施例根据BU做水平拆分,每个BU拆分得到一张维表。垂直拆分一般依据的元数据是主表、从表的关联情况情况及主从表的产出时间;同时会考虑业务的变化情况,将业务经常变化的从表建模至自定义维表,减少目标核心维表的经常变更。例如,根据元数据,被关联表1、被关联表2、被关联表3和主表关联次数大于某阈值,该具体实施例将这三张表和主表一起放到目标表;但主表、被关联表1在凌晨1点产出,而被关联表2、被 关联表3在凌晨3点产出,为了让使用主表和被关联表1的下游尽快使用数据,本具体实施例将主表和被关联表1建模得到核心维表,将主表、被关联表2和被关联表3建模得到自定义维表。在通过上述步骤完成数据建模前的准备处理之后,即可通过既有的建模工具进行数据建模并生成目标表。例如国外的ERWin、ER/Studio、PowerDesigner都是可用于操作型系统(OLTP)或分析型系统(OLAP系统,数据仓库即是OLAP系统)的ER图设计工具,以及国内的DMDWDesigner数据仓库建模工具等,在能够完成目标表生成目的的前提下,具体的数据建模工具的不同并不影响本申请的保护范围。为了进一步阐述本申请的技术思想,现结合图3及图4所示的具体的应用场景,对本申请的技术方案进行说明。图3为本申请具体实施例中的主体模块,其中包括元数据加工模块以及模型建设模块,图4为图3中元数据加工模块的进一步划分。其中,表的下游使用情况元数据主要包括,查询次数、调度系统查询次数、Join次数、调度系统Join次数、聚合次数、天网聚合次数、直接下游数、全部下游数等。如下表1所示:序号项目名表名查询次数天网查询次数JOIN次数直接下游个数全部下游数1AA1835.3430.91765571214962BB1343.7160.4127290705013CC1797.4212.71262341173124DD1229.2155.21142061607435EE1113.261.76593144155表1表的Join关系元数据主要包括,Join主表、Join从表、Join类型、Join次数、Join逻辑等,具体如下表2所示:序号项目名被关联表中文名关联次数关联逻辑1FF1表10当前主表2GG1表214xx.url_item=t1.item_id3HH1表36xx.url=t2.id4II1表44xx.cookieuid=t3.user_id5JJ1表54xx.visitor_id=t4.inf_user_id表2表的字段下游使用情况元数据主要包括,表的字段被下游使用的where次数、select次数、join次数、groupby次数及对应的在调度系统中的次数等,如下表3所示:表3基于上述元数据表,该具体实施例的具体流程示意图如图5所示,主要包括以下步骤:步骤a)选择主表:可以参考元数据,选择没有中间层表,但下游使用情况较多的ods层表。步骤b)确定目标表:对于事实表,通过业务过程打标,确定生成单事件事实表或多事件事实表;对于维表,确定是否进行水平拆分或垂直拆分。步骤c)选择从表:通过元数据展示主表的下游使用情况,比如主表和哪些表做了关联、关联次数、关联类型等;此处以根据关联次数大于某个阈值选择从表进行说明。步骤d)选择主表和从表的字段:通过元数据展示主表和从表的字段使用情况和dataprofile。如字段查询次数、过滤条件次数、join次数、聚合统计次数、空值占比、枚举值占比等。该具体实施例通过这些数据指导选取字段。步骤e)生成目标模型:目标模型主要包括两部分,第一部分是目标模型的ER图,即目标模型由哪些表关联得到并且取了这些表的哪些字段;另一部分是模型的另一种展示,即模型映射关系,包括目标表名称及注释、字段名称及类型、来源表、来源表的字段及类型、转换逻辑等。通过应用上述实施例的方案,融合了数据仓库建模的理论和方法,同时采用元数据驱动的方式,将建模数据化,通过数据化指导的方式进行建模,提供建模的准确度和效率。为达到以上技术目的,本申请还提出了一种数据建模设备,如图6所示,包括:第一确定模块610,根据各来源表的元数据确定用于数据建模的主表;第二确定模块620,根据所述主表的业务含义确定通过所述数据建模生成的目标表的类型;第三确定模块630,根据所述主表的元数据确定用于数据建模的从表;选择模块640,从所述主表以及所述从表中选择用于数据建模的字段;建模模块650,根据所述主表、所述从表以及所述字段进行数据建模,生成所述目标表。在具体的应用场景中,所述第二确定模块具体用于:若根据所述主表的业务含义确定所述目标表的类型为所述事实表,根据 所述主表的元数据确定所述事实表的具体类型,所述具体类型包括:事务型事实表、周期快照事实表以及累积快照事实表;若根据所述主表的业务含义确定所述目标表的类型为所述维表,根据所述主表的元数据确定所述维表是否需要进行拆分以及拆分方式,所述拆分方式包括:水平拆分以及垂直拆分。在具体的应用场景中,所述元数据包括下游使用信息,所述第三确定模块具体用于:根据所述下游使用信息获取与所述主表具有关联的数据表;获取所述主表与各所述数据表之间的关联信息,并将与预设的选择策略匹配的关联信息对应的数据表作为所述从表。在具体的应用场景中,所述选择模块具体用于:根据所述元数据分别获取所述主表以及所述从表的字段使用情况信息;根据所述字段使用情况信息选取所述字段;其中,所述字段使用情况信息至少包括:字段查询次数、过滤条件次数、关联次数、聚合统计次数、空值占比、枚举值占比。在具体的应用场景中,还包括处理模块,其中:当所述目标表为所述事务型事实表时,所述处理模块根据所述下游使用信息对所述主表的业务过程进行打标,确定生成单事件事实表或多事件事实表;当所述目标表为所述累积快照事实表,所述处理模块按照所述事务型事实表对所述主表的业务过程进行打标,并将当前用于所述数据建模的其他事实表的业务过程进行打标;当所述目标表为所述维表且所述拆分方式为所述水平拆分时,所述处理模块根据所述主表的字段使用情况信息将所述主表水平拆分为多个维表;当所述目标表为所述维表且所述拆分方式为所述垂直拆分时,根据所述 主表与各所述从表之间的关联信息,所述处理模块将业务变化高于预设阈值的从表与所述主表通过所述数据建模生成核心维表,以及将业务变化不高于预设阈值的从表通过所述数据建模生成自定义维表。通过应用本申请的技术方案,在根据各来源表的元数据确定用于数据建模的主表以及根据主表的业务含义确定通过数据建模生成的目标表的类型后,根据主表的元数据确定用于数据建模的从表,并从主表以及从表中选择用于数据建模的字段,最后根据主表、从表以及字段进行数据建模,生成所述目标表。从而能够基于数据表的元数据准确地进行数据建模,保证了数据建模结果的准确性以及效率。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1