CN114616558A - 利用适当的度量聚合生成多事实数据集的数据可视化 - Google Patents

利用适当的度量聚合生成多事实数据集的数据可视化 Download PDF

Info

Publication number
CN114616558A
CN114616558A CN202080077078.7A CN202080077078A CN114616558A CN 114616558 A CN114616558 A CN 114616558A CN 202080077078 A CN202080077078 A CN 202080077078A CN 114616558 A CN114616558 A CN 114616558A
Authority
CN
China
Prior art keywords
dimension
filter
tree
subtree
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080077078.7A
Other languages
English (en)
Inventor
克里斯蒂安·尤班克
贾斯汀·塔尔博特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tableau Software LLC
Original Assignee
Tableau Software LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/570,969 external-priority patent/US11966406B2/en
Application filed by Tableau Software LLC filed Critical Tableau Software LLC
Publication of CN114616558A publication Critical patent/CN114616558A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24535Query rewriting; Transformation of sub-queries or views
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24544Join order optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/26Visual data mining; Browsing structured data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F16/287Visualization; Browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/904Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

计算机接收指定数据源、视觉变量和来自数据源的数据字段的视觉规范。每个视觉变量与数据字段(例如,维度和/或度量)或过滤器相关联。计算机获得将数据源编码为相关逻辑表的树的数据模型。每个逻辑表包括逻辑字段,每个逻辑字段对应于数据字段或对应于跨越逻辑表的计算。计算机为维度和过滤器生成维度子查询。计算机还为每个度量生成按维度分组的聚合度量子查询。计算机通过将维度子查询联接到聚合度量子查询中的每一个来形成最终查询。计算机随后执行最终查询并根据最终查询的结果显示数据可视化。

Description

利用适当的度量聚合生成多事实数据集的数据可视化
技术领域
公开的实施方式总体上涉及数据可视化,且更具体地说涉及使用数据集的对象模型来进行数据集的交互式可视分析。
背景
数据可视化应用使用户能够在视觉上理解数据集,包括分布、趋势、离群值、和对做出业务决策重要的其他因素。一些数据元素是基于来自选定数据集的数据来计算出的。例如,数据可视化经常使用总和来聚合数据。一些数据可视化应用使用户能够指定可用于聚合计算的“细节级别”(LOD)。然而,为数据可视化指定单个细节级别是不足以建立某些计算的。
一些数据可视化应用提供用户界面,其使用户能够通过选择数据字段并将它们放置在特定的用户界面区域内以间接地定义数据可视化来从数据源建立可视化。请参见例如2003年6月2日提交的标题为“Computer Systems and Methods for the Query andVisualization of Multidimensional Databases”的序列号为10/453,834的美国专利申请(现在为第7,089,266号美国专利),其通过引用被全部并入本文。然而,当存在复杂的数据源和/或多个数据源时,可能不清楚基于用户的选择要生成什么类型的数据可视化(如果有的话)。
另外,一些系统构建的查询产生了并非用户期望的数据可视化。在一些情况下,一些数据行被省略(例如,当事实表之一中没有相应的数据时)。在一些情况下,由于同一数据值被多次计数,因此数字聚合字段产生的合计数被夸大。这些问题可能特别成问题,因为终端用户可能没有意识到该问题和/或不知道是什么导致了该问题。
概述
生成组合来自多个表的数据的数据可视化可能是有挑战性的,尤其是当有多个事实表时。在一些情况下,在生成数据可视化之前构建数据的对象模型可能是有益的。在一些实例中,一个人是关于数据的特定专家,且这个人创建对象模型。通过将关系存储在对象模型中,即使用户不是专家,数据可视化应用也可以运用该信息来帮助所有访问数据的用户。
对象是所命名的属性的集合。对象常常对应于真实世界对象、事件、或概念,例如商店。属性是对象的描述,其在概念上与对象成1:1关系。因此,商店对象可以有与它相关联的单个[经理姓名]或[雇员计数]。在物理级别上,对象常常被存储为在关系表中的行或者被存储为JSON中的对象。
类(class)是共享相同属性的对象的集合。比较在一个类中的对象并对它们进行聚合必须是在分析上有意义的。在物理级别上,类常常被存储为关系表或者被存储为JSON中的对象的数组。
对象模型是类的集合和在它们之间的多对一关系的集合。通过1对1关系相关的类在概念上被视为单个类,即使它们对用户来说在意义上是不同的。此外,通过1对1关系相关的类可以在数据可视化用户界面中呈现为不同的类。通过添加捕获关系的关联表,多对多关系在概念上被分成两个多对一关系。
一旦对象模型被构建,数据可视化应用就可以以各种方式帮助用户。在一些实施方式中,基于已经被选择并放置在用户界面中的工具架(shelf)上的数据字段,数据可视化应用可以推荐附加字段或者限制什么动作可以被采取来防止不可用的组合。在一些实施方式中,数据可视化应用允许用户在选择字段方面的相当大的自由度,并且使用对象模型以根据用户选择的内容来建立一个或更多个数据可视化。
根据一些实施方式,一种方法生成数据可视化。该方法在具有一个或更多个处理器和存储器的计算机处被执行。存储器存储被配置为由一个或更多个处理器执行的一个或更多个程序。该计算机接收指定数据源、多个视觉变量和来自数据源的多个数据字段的视觉规范。每个视觉变量与(i)数据字段中相应的一个或更多个或(ii)一个或更多个过滤器相关联,并且数据字段中的每一个被识别为维度或度量。计算机获得将数据源编码为逻辑表的树的数据模型(或对象模型)。每个逻辑表都有其自己的物理表示,并包括各自的一个或更多个逻辑字段。每个逻辑字段对应于数据字段或跨越一个或更多个逻辑表的计算。树的每条边连接两个相关的逻辑表。计算机基于为维度和过滤器提供数据字段的逻辑表来生成维度子查询。计算机还基于为各个度量和过滤器提供数据字段的逻辑表,为每个度量生成按维度分组的聚合度量(aggregated measure)子查询。计算机通过使用维度将维度子查询联接(join)到聚合度量子查询中的每一个来形成最终查询。计算机随后对数据源执行最终查询,以检索包含对于数据字段的数据值的不同有序组合的元组。计算机然后根据元组中的数据字段并根据数据字段中的每一个所关联到的视觉变量来建立并显示数据可视化。
在一些实施方式中,计算机通过执行一系列操作来生成每个聚合度量子查询。计算机计算逻辑表的树的度量子树。度量子树是为相应度量提供数据字段所需的最小子树。计算机还计算逻辑表的树的维度-过滤器子树。维度-过滤器子树是为维度和过滤器提供所有物理输入所需的最小子树。当维度-过滤器子树不与度量子树共享任何逻辑表时,计算机将来自度量子树的相邻逻辑表添加到维度-过滤器子树。计算机编译度量子树以获得度量联接树,并且编译维度-过滤器子树以获得维度-过滤器联接树。计算机在度量联接树和维度-过滤器联接树上对计算和过滤器进行分层,以分别获得更新的度量子树和更新的维度-过滤器子树。计算机通过应用分组操作(group-by operation)来对更新的维度-过滤器子树去重(de-duplicate),以获得去重的维度-过滤器子树,该分组操作使用维度和链接字段,该链接字段包括(i)来自逻辑表之间的关系的键和(ii)与度量子树共享的计算的数据字段。计算机将去重的维度-过滤器子树与更新的度量子树进行组合,以获得聚合度量子查询。
在一些实施方式中,计算机通过内联接度量子树中的逻辑表来编译度量子树,以获得度量联接树。
在一些实施方式中,计算机通过执行一系列操作来计算维度-过滤器子树。计算机内联接在维度-过滤器子树中与度量子树共享的逻辑表,并且左联接(也被称为左外联接)在维度-过滤器子树中不与度量子树共享的逻辑表,以获得维度-过滤器联接树。
在一些实施方式中,计算机通过执行一系列操作来将去重的维度-过滤器子树与更新的度量子树进行组合。计算机确定去重的维度-过滤器子树是否包含过滤器。当去重的维度-过滤器子树包含过滤器时,计算机将更新的度量子树与去重的维度-过滤器子树进行内联接。当去重的维度-过滤器子树不包含过滤器时,计算机将更新的度量子树与去重的维度-过滤器子树进行左外联接。
在一些实施方式中,计算机确定键是否指示第一逻辑表和第二逻辑表之间的多对一关系或一对一关系。当键指示第一逻辑表和第二逻辑表之间的多对一关系时,计算机在度量子树中包括第一表和第二表,从而避免了在对第一逻辑表和第二逻辑表的去重操作中的分组。
在一些实施方式中,当维度-过滤器子树仅沿着多对一链接和一对一链接对度量子树进行联接时,计算机用去重的维度-过滤器子树替换由度量子树和维度-过滤器子树共享的表。
在一些实施方式中,计算机通过内联接逻辑表的树中的第一一个或更多个逻辑表来生成维度子查询。第一一个或更多个逻辑表中的每个逻辑表提供用于维度和/或过滤器的数据字段。
在一些实施方式中,计算机通过使用外联接在维度上联接维度子查询和聚合度量子查询,并在每个外联接之后应用COALESCE,来形成最终查询。
在一些实施方式中,当可视化没有维度时,计算机执行聚合度量子查询之间的全联接(full join)以形成最终查询。
根据一些实施方式,用于生成数据可视化的系统包括一个或更多个处理器、存储器、和存储在存储器中的一个或更多个程序。程序被配置为由一个或更多个处理器执行。程序包括用于执行本文所述的任何方法的指令。
根据一些实施方式,非暂时性计算机可读存储介质存储被配置为由具有一个或更多个处理器和存储器的计算机系统执行的一个或更多个程序。该一个或更多个程序包括用于执行本文所述的任何方法的指令。
因此,提供了用于数据集合的交互式可视分析的方法、系统和图形用户界面。
附图简述
为了对本发明的前面提到的实施方式以及附加实施方式的更好理解,应结合随附的附图参考下面的实施方式的描述,附图中相似的附图标记在全部附图中指相对应的部分。
图1在概念上示出了根据一些实施方式建立数据可视化的过程。
图2是根据一些实施方式的计算设备的框图。
图3是根据一些实施方式的数据可视化服务器的框图。
图4提供了根据一些实施方式的示例数据可视化用户界面。
图5A示出了根据一些实施方式的示例数据模型(或对象模型)。
图5B示出了根据一些实施方式的数据可视化。
图5C示出了根据一些实施方式的数据可视化。
图6A示出了根据一些实施方式的示例数据模型或对象模型。
图6B示出了根据一些实施方式的数据可视化。
图7示出了根据一些实施方式的示例查询。
图8A示出了根据一些实施方式的数据可视化。
图8B示出了根据一些实施方式的示例查询。
图9A示出了根据一些实施方式的数据可视化。
图9B示出了根据一些实施方式的示例查询。
图10A和图10B示出了根据一些实施方式的示例查询。
图11A示出了根据一些实施方式的数据可视化。
图11B示出了根据一些实施方式的示例查询。
图11C-图11F示出了根据一些实施方式的数据可视化。
图12A示出了根据一些实施方式的数据可视化。
图12B-图12D示出了根据一些实施方式的示例查询。
图13A-图13D提供了根据一些实施方式的用于使用对象模型生成数据可视化的方法的流程图。
在全部附图中,相似的附图标记指相对应的部分。
现在将详细参考实施方式,实施方式的示例在附图中被示出。在下面的详细描述中,阐述了许多具体细节,以便提供对本发明的透彻理解。然而,对本领域的普通技术人员将明显的是,本发明可在没有这些具体细节的情况下被实践。
实施方式的描述
交互式数据可视化应用的一些实施方式使用数据可视化用户界面102来建立视觉规范104,如图1所示。视觉规范识别可以在本地存储(例如,存储在显示用户界面102的同一设备上)或者可以在外部存储(例如,存储在数据库服务器上或在云中)的一个或更多个数据源106。视觉规范104还包括视觉变量。视觉变量根据来自数据源106的选定数据字段间接地指定期望的数据可视化的特征。特别是,用户向每个视觉变量分配零个或更多个数据字段,并且数据字段的值确定将被显示的数据可视化。
在大多数实例中,不是所有的视觉变量都被使用。在一些实例中,一些视觉变量具有两个或更多个所分配的数据字段。在这个场景中,视觉变量的所分配的数据字段的顺序(例如,数据字段由用户分配到视觉变量的顺序)通常影响数据可视化如何被生成和显示。
一些实施方式使用对象模型108(有时称为数据模型)来建立适当的数据可视化。在一些实例中,对象模型适用于一个数据源(例如,一个SQL数据库或一个电子表格文件),但对象模型可以包含两个或更多个数据源。通常,不相关的数据源具有不同的对象模型。在一些实例中,对象模型紧密地模仿物理数据源的数据模型(例如,在对象模型中的类对应于在SQL数据库中的表)。然而,在一些情况下,对象模型比物理数据源更规范化(或更不规范化)。对象模型将彼此间具有一对一关系的属性(例如,数据字段)分组在一起以形成类,并识别在类之间的多对一关系。在下面的图示中,多对一关系用箭头示出,每个关系的“多”侧在垂直方向上低于关系的“一”侧。对象模型还将每个数据字段(属性)识别为维度或度量。在下文中,字母“D”(或“d”)用于表示维度,而较后的“M”(或“m”)用于表示度量。当对象模型108被构建时,它可以便于基于用户选择的数据字段来建立数据可视化。因为单个对象模型可以被无限数量的其他人使用,所以为数据源建立对象模型通常被委托给作为关于数据源的相关专家的人。
当用户(例如,通过使用图形用户界面来将数据字段放置到工具架上而间接地)将数据字段添加到视觉规范时,数据可视化应用222(或web应用322)根据对象模型108来将用户选择的数据字段分组(110)在一起。这种组被称为数据字段集合。在许多情况下,所有用户选择的数据字段在单个数据字段集合中。在一些实例中,存在两个或更多个数据字段集合。每个度量m在确切的一个数据字段集合中,但每个维度d可以在多于一个的数据字段集合中。
数据可视化应用222(或web应用322)针对第一数据字段集合查询(112)数据源106,且然后生成对应于检索到的数据的第一数据可视化122。根据在视觉规范104中的视觉变量282来构建第一数据可视化122,视觉变量282具有从第一数据字段集合分配的数据字段284。当只有一个数据字段集合时,在视觉规范104中的所有信息被用于建立第一数据可视化122。当存在两个或更多个数据字段集合时,第一数据可视化122基于由与第一数据字段集合相关的所有信息组成的第一视觉子规范。例如,假设原始视觉规范104包括使用数据字段f的过滤器。如果字段f被包括在第一数据字段集合中,则该过滤器是第一视觉子规范的一部分,并且因此被用于生成第一数据可视化122。
当存在第二(或后续)数据字段集合时,数据可视化应用222(或web应用322)针对第二(或后续)数据字段集合查询(114)数据源106,且然后生成对应于检索到的数据的第二(或后续)数据可视化124。根据在视觉规范104中的视觉变量282来构建该数据可视化124,视觉变量282具有从第二(或后续)数据字段集合分配的数据字段284。
图2是示出计算设备200的框图,该计算设备200可以执行数据可视化应用222或数据可视化web应用322以显示数据可视化122。在一些实施方式中,计算设备显示数据可视化应用222的图形用户界面102。计算设备200包括台式计算机、膝上型计算机、平板计算机、以及具有能够运行数据可视化应用222的显示器和处理器的其他计算设备。计算设备200通常包括:用于执行被存储在存储器214中的模块、程序和/或指令并从而执行处理操作的一个或更多个处理单元/核心(CPU)202;一个或更多个网络或其它通信接口204;存储器214;以及用于将这些部件互连的一个或更多个通信总线212。通信总线212可以包括在系统部件之间进行互连和控制在系统部件之间的通信的电路。计算设备200包括用户接口206,用户接口206包括显示器208和一个或更多个输入设备或机构210。在一些实施方式中,输入设备/机构包括键盘;在一些实施方式中,输入设备/机构包括“软”键盘,其根据需要被显示在显示器208上,使用户能够“按下”出现在显示器208上的“键”。在一些实施方式中,显示器208和输入设备/机构210包括触摸屏显示器(也被称为触敏显示器)。在一些实施方式中,显示器是计算设备200的集成部分。在一些实施方式中,显示器是独立的显示设备。
在一些实施方式中,存储器214包括高速随机存取存储器,例如DRAM、SRAM、DDRRAM或其他随机存取固态存储器设备。在一些实施方式中,存储器214包括非易失性存储器,例如一个或更多个磁盘存储设备、光盘存储设备、闪存设备、或其他非易失性固态存储设备。在一些实施方式中,存储器214包括远离CPU 202定位的一个或更多个存储设备。存储器214或可替代地在存储器214内的非易失性存储器设备包括非暂时性计算机可读存储介质。在一些实施方式中,存储器214或存储器214的计算机可读存储介质存储下面的程序、模块、和数据结构、或其子集:
·操作系统216,其包括用于处理各种基本系统服务和用于执行硬件相关的任务的过程;
·通信模块218,其用于经由一个或更多个通信网络接口204(有线的或无线的)和一个或更多个通信网络(例如互联网、其它广域网、局域网、城域网等)来将计算设备200连接到其它计算机和设备;
·web浏览器220(或其他客户端应用),其使用户能够通过网络与远程计算机或设备通信;
·数据可视化应用222,其提供图形用户界面102以用于使用户构建视觉图形(例如,单独的数据可视化或具有多个相关的数据可视化的仪表板)。在一些实施方式中,数据可视化应用222作为独立应用(例如,桌面应用)执行。在一些实施方式中,数据可视化应用222在web浏览器220内(例如,作为web应用322)执行;
·图形用户界面102,其使用户能够通过在视觉上指定元素来建立数据可视化,如下面在图4中所示;
·在一些实施方式中,用户界面102包括多个工具架区域250,其用于指定期望的数据可视化的特征。在一些实施方式中,工具架区域250包括用于指定数据在期望的数据可视化中的布置的列工具架230和行工具架232。通常,被放置在列工具架230上的字段用于定义在数据可视化中的列(例如,视觉标记的x坐标)。类似地,被放置在行工具架232上的字段定义在数据可视化中的行(例如,视觉标记的y坐标)。在一些实施方式中,工具架区域250包括过滤器工具架262,其使用户能够根据选定数据字段来限制所查看的数据(例如,将数据限制到特定字段具有特定值或具有在特定范围内的值的行)。在一些实施方式中,工具架区域250包括用于指定数据标记的各种编码的标记工具架264。在一些实施方式中,标记工具架264包括颜色编码图标270(以基于数据字段来指定数据标记的颜色)、大小编码图标272(以基于数据字段来指定数据标记的大小)、文本编码图标(以指定与数据标记相关联的标签)、和视图级别细节图标228(以指定或修改数据可视化的细节级别);
·视觉规范104,其用于定义期望的数据可视化的特征。在一些实施方式中,使用用户界面102来建立视觉规范104。视觉规范包括所识别的数据源280(即,指定数据源是什么),其提供足够的信息来找到数据源106(例如,数据源名称或网络完整路径名称)。视觉规范104还包括视觉变量282和每个视觉变量的所分配的数据字段284。在一些实施方式中,视觉规范具有对应于每个工具架区域250的视觉变量。在一些实施方式中,视觉变量也包括其他信息,例如关于计算设备200的上下文信息、用户偏好信息、或未被实现为工具架区域的其他数据可视化特征(例如,分析特征);
·一个或更多个对象模型108,其识别数据源106的结构。在对象模型中,数据字段(属性)被组织成类,其中在每个类中的属性彼此间具有一对一的对应性。对象模型还包括在类之间的多对一关系。在一些实例中,对象模型将在数据库内的每个表映射到一个类,在类之间的多对一关系对应于在表之间的外键关系。在一些实例中,基本源的数据模型不以这种简单的方式干净利索地映射到对象模型,因此对象模型包括指定如何将原始数据转换为适当的类对象的信息。在一些实例中,原始数据源是被转换成多个类的简单文件(例如,电子表格);
·数据可视化生成器290,其根据视觉规范来生成并显示数据可视化。根据一些实施方式,数据可视化生成器290使用对象模型108来生成查询294(例如,维度子查询、聚合度量子查询和/或最终查询)和/或使用查询优化器292优化查询。根据一些实施方式,在下面参照图5A-图11来描述查询生成和优化技术的细节。
·可视化参数236,其包含由数据可视化应用222使用的信息,而不是包含由视觉规范104和数据源106提供的信息;以及
·零个或更多个数据库或数据源106(例如,第一数据源106-1),其由数据可视化应用222使用。在一些实施方式中,数据源可以被存储为电子表格文件、CSV文件、XML文件、平面文件、JSON文件、在关系数据库、云数据库或统计数据库中的表。
上面识别的可执行模块、应用、或过程集中的每一者可以被存储在前面提到的存储器设备中的一个或更多个中,并且对应于用于执行上述功能的指令的集合。上面识别的模块或程序(即,指令集)不需要被实现为独立的软件程序、过程、或模块,并且因此这些模块的各种子集可以在各种实施方式中被组合或以其他方式重新布置。在一些实施方式中,存储器214存储上面识别的模块和数据结构的子集。在一些实施方式中,存储器214可以存储上面未描述的附加模块或数据结构。
尽管图2示出了计算设备200,但图2更多地被预期作为可能存在的各种特征的功能描述,而不是作为本文所述的实施方式的结构示意图。在实践中且如本领域中的普通技术人员所认识到的,单独示出的项目可以被组合并且一些项目可以被分离。
图3是根据一些实施方式的数据可视化服务器300的框图。数据可视化服务器300可以托管一个或更多个数据库328,或者可以提供各种可执行的应用或模块。服务器300通常包括一个或更多个处理单元/核心(CPU)302、一个或更多个网络接口304、存储器314、和用于将这些部件互连的一个或更多个通信总线312。在一些实施方式中,服务器300包括用户接口306,用户接口306包括显示器308和一个或更多个输入设备310(例如键盘和鼠标)。在一些实施方式中,通信总线312可以包括在系统部件之间进行互连和控制在系统部件之间的通信的电路(有时被称为芯片组)。
在一些实施方式中,存储器314包括高速随机存取存储器,例如DRAM、SRAM、DDRRAM、或其他随机存取固态存储器设备,并且可以包括非易失性存储器,例如一个或更多个磁盘存储设备、光盘存储设备、快闪存储器设备、或其他非易失性固态存储设备。在一些实施方式中,存储器314包括远离CPU 302定位的一个或更多个存储设备。存储器314或可替代地在存储器314内的非易失性存储器设备包括非暂时性计算机可读存储介质。
在一些实施方式中,存储器314或存储器314的计算机可读存储介质存储下面的程序、模块、和数据结构、或其子集:
·操作系统316,其包括用于处理各种基本系统服务和用于执行硬件相关的任务的过程;
·网络通信模块318,其用于经由一个或更多个通信网络接口304(有线的或无线的)和一个或更多个通信网络(例如互联网、其它广域网、局域网、城域网等)来将服务器300连接到其它计算机;
·web服务器320(例如HTTP服务器),其接收来自用户的web请求,并通过提供响应式网页或其他资源来做出响应;
·数据可视化web应用322,其可以由在用户的计算设备200上的web浏览器220下载和执行。一般来说,数据可视化web应用322具有与桌面数据可视化应用222相同的功能,但提供从在具有网络连接的任何位置处的任何设备进行访问的灵活性,并且不需要安装和维护。在一些实施方式中,数据可视化web应用322包括各种软件模块来执行某些任务。在一些实施方式中,web应用322包括为web应用322的所有方面提供用户界面的用户界面模块324。在一些实施方式中,用户界面模块324指定工具架区域250,如上面针对计算设备200所述;
·当用户选择期望的数据可视化的特征时,数据可视化web应用还存储视觉规范104。上面针对计算设备200描述了视觉规范104及它们存储的数据;
·一个或更多个对象模型108,如上面针对计算设备200所述;
·数据可视化生成器290,其根据用户选择的数据源和数据字段以及描述数据源106的一个或更多个对象模型108来生成和显示数据可视化。上面关于计算设备200描述了数据可视化生成器的操作;
·在一些实施方式中,web应用322包括数据检索模块326,数据检索模块326建立并执行查询以从一个或更多个数据源106检索数据。数据源106可以在本地存储在服务器300上,或者存储在外部数据库328中。在一些实施方式中,可以融合来自两个或更多个数据源的数据。在一些实施方式中,数据检索模块326使用视觉规范104来建立查询,如上面针对图2中的计算设备200所述;
·在一些实施方式中,存储器存储可视化参数236,如上面针对计算设备200所述;和
·一个或更多个数据库328,其存储由数据可视化web应用322或数据可视化应用222使用或创建的数据。数据库328可以存储提供在所生成的数据可视化中使用的数据的数据源106。每个数据源106包括一个或更多个数据字段330。在一些实施方式中,数据库328存储用户偏好。在一些实施方式中,数据库328包括数据可视化历史日志334。在一些实施方式中,历史日志334跟踪每次数据可视化再现数据可视化。
数据库328可以以许多不同的格式存储数据,并且通常包括许多不同的表,每个表具有多个数据字段330。一些数据源包含单个表。数据字段330包括来自数据源的原始字段(例如,来自数据库表的列或来自电子表格的列)以及可以从一个或更多个其他字段计算或构建的派生数据字段。例如,派生数据字段包括从日期字段计算月或季度、计算在两个日期字段之间的时间的跨度、计算定量字段的累积总数、计算百分比增长等。在一些实例中,派生数据字段通过在数据库中所存储的过程或视图进行访问。在一些实施方式中,派生数据字段330的定义与数据源106分开地被存储。在一些实施方式中,数据库328存储每个用户的用户偏好的集合。当数据可视化web应用322(或应用222)做出关于如何查看数据字段330的集合的建议时,用户偏好可以被使用。在一些实施方式中,数据库328存储数据可视化历史日志334,其存储关于所生成的每个数据可视化的信息。
在一些实施方式中,数据库328存储其他信息,包括由数据可视化应用222或数据可视化web应用322使用的其他信息。数据库328可以与数据可视化服务器300分离,或者可以与数据可视化服务器包括在一起(或者两者)。
在一些实施方式中,数据可视化历史日志334存储由用户选择的视觉规范104,视觉规范104可以包括用户标识符、当数据可视化被创建时的时间戳、在数据可视化中使用的数据字段的列表、数据可视化的类型(有时被称为“视图类型”或“图表类型”)、数据编码(例如,标记的颜色和大小)、所选择的数据关系、以及什么连接器被使用。在一些实施方式中,每个数据可视化的一个或更多个缩略图图像也被存储。一些实施方式存储关于所创建的数据可视化的附加信息,例如数据源的名称和位置、来自在数据可视化中包括的数据源的行的数量、数据可视化软件的版本等。
上面识别的可执行模块、应用、或过程集中的每一者可以被存储在前面提到的存储器设备中的一个或更多个中,并且对应于用于执行上述功能的指令集。上面识别的模块或程序(即,指令集)不需要被实现为独立的软件程序、过程、或模块,并且因此这些模块的各种子集可以在各种实施方式中被组合或以其他方式重新布置。在一些实施方式中,存储器314存储上面识别的模块和数据结构的子集。在一些实施方式中,存储器314存储上面未描述的附加模块或数据结构。
尽管图3示出了数据可视化服务器300,但图3更多地被预期作为可能存在的各种特征的功能描述,而不是作为本文所述的实施方式的结构示意图。在实践中且如本领域中的普通技术人员所认识到的,单独示出的项目可以被组合并且一些项目可以被分离。此外,上面关于服务器300示出的一些程序、功能、过程、或数据可以在计算设备200上被存储或执行。在一些实施方式中,功能和/或数据可以在计算设备200和一个或更多个服务器300之间进行分派。此外,本领域中的技术人员认识到,图3不必表示单个物理设备。在一些实施方式中,服务器功能跨越包括服务器系统的多个物理设备进行分派。如在本文所使用的,对“服务器”或“数据可视化服务器”的提及包括提供所描述的功能的服务器的各种组、集体、或阵列,并且物理服务器不必在物理上并置(例如,各个物理设备可以遍布全美国或遍布全世界)。
图4示出了根据一些实施方式的数据可视化用户界面102。用户界面102包括也被称为数据窗格的模式信息区域410。模式信息区域410提供可以被选择并用于建立数据可视化的所命名的数据元素(例如,字段名称)。在一些实施方式中,字段名称的列表被分成一组维度和一组度量(通常是数字量)。一些实施方式还包括参数的列表。图形用户界面102还包括数据可视化区域412。数据可视化区域412包括多个工具架区域250,例如列工具架区域230和行工具架区域232。这些也被称为列工具架230和行工具架232。此外,该用户界面102包括过滤器工具架262,过滤器工具架262可以包括一个或更多个过滤器424。
如这里所示的,数据可视化区域412还具有用于显示视觉图形的大空间。因为在此图示中还没有数据元素被选择,所以空间最初没有视觉图形。
用户选择一个或更多个数据源106(其可以被存储在计算设备200上或远程地被存储),从数据源选择数据字段,并使用所选择的字段来定义视觉图形。数据可视化应用222(或web应用322)在数据可视化区域412中显示所生成的图形122。在一些实施方式中,用户提供的信息被存储为视觉规范104。
在一些实施方式中,数据可视化区域412包括标记工具架264。标记工具架264允许用户指定数据标记的各种编码426。在一些实施方式中,标记工具架包括颜色编码图标270、大小编码图标272、文本编码图标274、和/或视图级别细节图标228,视图级别细节图标228可用于指定或修改数据可视化的细节级别。
在一些实施方式中,数据可视化平台使用户能够使用单个逻辑表通过拖放动作来建立可视化,即使当数据来自多个物理表时。逻辑表可以通过物理建模来构建,物理建模可以包括行列转换(pivot)、联接和联合(union)。通过物理建模组合的表表示逻辑表本身。在一些数据可视化平台(诸如Tableau)中,查询生成模型会自动将用户动作映射到对物理表中的数据的底层查询。
在一些实施方式中,分析人员创建对象模型,图5A中示出了对象模型的示例,其中有六个逻辑表。对于图5A中的示例,每个表都有它自己的度量粒度,无论数据的实际物理存储如何,都可以更好地将其建模为逻辑表。示例对象模型包括行项目表502,该行项目表502具有与订单表504的联接514和与产品表506的另一联接516。该示例还示出了订单表504,该订单表504具有与地址表508的联接518和与客户表510的另一联接520。地址表508具有与州表512的联接522。
假设用户创建了如图5B所示的可视化530。在这种情况下,销售额524是来自行项目表502的度量,人口526是来自州表512的度量。虽然可能得出正确的销售额结果,但是数据可视化夸大了人口的度量值。对于这个示例,一些州的人口被表示为数十亿人528。造成这种倍量的原因在于数据可视化框架查询了联接在一起的所有表。该联接树的粒度是行项目502的粒度。换句话说,每一行表示一个行项目,并将包含一列,该列包含发生了行项目的州的人口。因此,SUM(人口)将产生州的人口乘以对于该州的行项目的数量。出现此问题是因为六个概念上的逻辑表被视为单个逻辑表。
修复度量倍量的一个解决方案是使用细节级别计算。例如,计算{Fixed[State(州)]:MIN([人口])}可以被重写以将人口聚合到其原生粒度。图5C示出了根据一些实施方式在使用细节级别计算532之后的数据可视化540。如所示,人口被正确地以百万为单位536显示(而不是如在图5B中被错误地显示的以十亿为单位)。然而,这种方法的一个主要缺点在于,它要求分析人员意识到倍量以及理解这些计算的语义。另外,默认轴标签534是复杂表达式而不是“人口”。所公开的实施方式提供了由数据可视化应用自动执行的替代解决方案。
为了克服这些问题中的至少一些问题,一些实施方式包括一种将拖放动作映射到更细粒度的逻辑模型的方法。与单个逻辑表不同,一些实施方式在逻辑表的树上操作,在该树中,每个节点都是一个逻辑表(具有其自己的物理表示),并且每条边是两个表之间的链接。
一些实施方式处理一个或更多个逻辑表的主键未知或无法确定的情况(无需更复杂的分析)。换句话说,逻辑表的主键丢失了。主键是用于恢复表的粒度的强大工具。
一些实施方式处理逻辑表之间的多个关系基数。关系可以是多对一、一对一或多对多。一些实施方式将未知关系类型视为多对多。一些实施方式使用关系信息来恢复主键。例如,在关系的“一”侧的字段包含主键。
在下面的描述中,逻辑字段指的是从逻辑表内的底层表示中产生的数据字段(例如,来自支持逻辑表的物理数据库表的字段),或者指的是具有跨逻辑表的输入的计算。
图6A根据一些实施方式将对象模型示出为逻辑树。如数字所示,这些表对应于图5A所示示例中的表。每个逻辑表都与其右边的邻居有多对一的关系。有时,这些关系具有未知基数。
一些实施方式利用适当的度量聚合将用户动作映射到可视化。一些实施方式利用逻辑树结构来生成可视化(图6B中示出了可视化的示例),其中度量以它们的原生粒度被聚合。因此,对于上面参考图5A描述的示例,分析人员可以获得适当的人口值,而不必添加新的计算。
一些实施方式计算全域值。为了说明,假设州表512内包含州的完整集合。对于图6B中的可视化,并不是所有州都可能有销售额。因此,如果使用内联接将所有表联接在一起,可视化框架可以丢弃没有销售额的州(例如,Alaska和Hawaii)。一种解决方案是使用部分外联接或全外联接来保留所有州。一些实施方式通过首先查询计算维度值所必须的逻辑表来生成包含全域的可视化。
一些实施方式确保甚至在添加新维度时度量值也能被表示或被保留。例如,由于丢失的或格式错误的外键,销售额可能不具有州。如果表被内联接在一起,则销售额值将被丢弃。一些实施方式通过查询获取完整度量值所需的表并使用左联接来确保丢失维度不会导致度量被丢弃,从而避免此问题。对于上面的示例,没有州的销售额由“空(Null)”州编码。
一些实施方式查询的表比不使用逻辑表的树的解决方案所需的要少。对于上面的示例,可替代的框架本来会查询图6A所示的所有六个表的联接树。利用本文公开的技术,数据可视化框架可以识别必须要被查询的仅行项目表502、订单表504、地址表508和州表512,因为这些是包含维度和度量值的逻辑表,或者是沿着对于这些表的联接路径的逻辑表。
一些实施方式在主键和基数信息可用时利用或结合这样的信息,但是即使在最坏的情况下(例如,当逻辑表之间的所有链接或关系都是多对多的,或者当逻辑表没有已知的主键时),这些技术也会产生正确的结果。一些实施方式结合了这样的信息以生成更简单的查询。
一些实施方式将可视化的描述映射到包括维度、度量和过滤器的高级别的查询表示。传统的实施方式假设单个逻辑表,同时将该表示转换为较低级别的查询表示。另一方面,本文描述的技术生成对逻辑表的树的语义进行编码的查询。一些实施方式生成包含维度的子查询和对于每个聚合度量(按维度分组)的子查询。一些实施方式在维度上将这些子查询联接在一起,如下文进一步描述。
生成子查询
为了生成维度子查询,一些实施方式联接包含维度字段的所有逻辑表,或者将这些表联接在一起,并按设置的维度进行分组。在生成度量子查询时,一些实施方式以度量的粒度生成平面表(flat table),该平面表包含度量的输入字段(在逻辑度量的情况下)和维度。一些实施方式在维度上应用聚合和分组。在下面的讨论中,非逻辑字段(即,非计算的字段)有时被称为物理字段,并且逻辑表有时被称为表。
对于每个度量,一些实施方式使用算法以度量的粒度生成平面表。该算法包括收集用于维度、度量和过滤器的物理输入字段。该算法还包括计算对于所有物理输入字段所需的最小子树(称为物理子树)。该算法还包括计算为度量提供所有物理输入所需的另一个最小子树(称为度量子树)。
该算法还包括将子树划分为子树分量。从度量子树发出的树被称为维度过滤器子树。此时,度量子树和维度过滤器子树是不联接的。逻辑字段或过滤器可能会跨入或跨越度量子树。在这种情况下,该算法包括创建维度-度量子树,该维度-度量子树将一个或更多个维度过滤器子树与来自度量子树的表的最小集合(例如,相邻表)合并。
该算法还包括将逻辑字段和过滤器分配给包含其所有输入的子树。该算法还包括将逻辑字段和过滤器分层在由联接在一起的子树中的所有表组成的联接树的顶部。一些实施方式内联接度量子树中的表,并沿着从度量表发出的路径左外联接其他表。
一些实施方式使用链接字段对维度上的每个维度子树(如果适用的话,还有维度/度量子树)去重。去重步骤的结构是一组字段上的“分组(Group By)”,以及其余字段上的“最大值(MAX)”。一些实施方式使用一组链接字段,这些链接字段包括:(i)来自度量表的计算逻辑维度字段和过滤器所需的物理字段(有时被称为物理输入字段或数据字段),以及(ii)将此子树与度量子树进行链接的关系字段。一些实施方式从度量子树开始将所有子树左外联接在一起。如果维度子树具有过滤器,那么一些实施方式向维度子树添加常量计算,并在联接的顶部添加过滤器以确定此计算不为空。
下面的示例示出了根据一些实施方式的上述算法的应用。对于上面参考图5A-图5C和图6A-图6B讨论的可视化示例,针对州和人口的预聚合子查询只是州表512。根据一些实施方式,针对州和销售额的查询在图7中示出。物理子树由行项目表502(用于度量)、州表512(用于维度)以及订单表504和地址表508组成,因为这些表是提供物理输入字段所需的。对于本示例,度量子树是行项目,并且存在包含其他三个表的单个维度子树。一些实施方式按照行项目表502和维度子树之间的生成关系(spanning relationship)中的维度(州)和键(被示为主键‘PK’)对维度子树进行分组(704)。在这种情况下,维度子树经由行项目表502和订单表504之间的链接而联接(702)。一些实施方式经由此链接来联接度量子树和维度子树。联接702、706和708是从度量子树发出的左外联接,以确保行项目表中具有缺失州的行不会丢失。
接下来参考图8A和图8B,假设用户创建了一个跨逻辑表的计算,例如[完整城市名称]=[城市名称]+“,”+[州名称],其中[城市名称]来自地址表508,而[州名称]来自州表512。图8A示出了根据一些实施方式的在该场景中的数据可视化800。根据一些实施方式,图8B中示出了对可视化的查询。物理联接树包括州表512(用于度量和维度)和地址表508(用于维度)。
对于该示例,度量子树是州,而维度子树包括跨越地址表508和州表512的逻辑维度字段804。因此,这个示例示出了维度-度量子树的实例。一些实施方式使用度量表和维度-度量子树中的其余表之间的关系将该子树联接(802)到度量子树。一些实施方式使用维度(完整城市名称)、联接关系(州外键(FK))以及落在维度-度量子树的度量部分中的维度的物理输入(州名称)来对维度-度量子树去重(806)。随后,一些实施方式使用来自关系的键和物理输入字段进行联接(808)。
接下来参考图9A和图9B,假设用户想要创建被过滤到“技术”类别的按照运送模式(Ship Mode)的销售额总和的可视化900。一些实施方式生成图9B所示的查询。物理联接树是行项目表502(用于度量)、订单表504(用于维度)和产品表506(用于过滤器)。度量子树是行项目表502。在这种情况中,存在两个非联接的维度子查询:订单(用于维度)和产品(用于过滤器906)。一些实施方式在来自关系的键上左外联接(902)度量子查询(有时被称为度量子树)和去重的运送模式维度子查询904。接下来,一些实施方式将该结果与去重的维度子查询908进行左联接(912)。一些实施方式在过滤器(例如,过滤器906和914)的顶部添加哨兵(sentinel)计算(例如,哨兵910)。一些实施方式添加过滤器以只保留哨兵值为非空的行,从而确保在给定左外联接的情况下遵守过滤器。一些实施方式交换维度和维度-度量子图的联接顺序,同时获得相同的结果。
图10A和图10B示出了根据一些实施方式的优化的查询的示例。一些实施方式在关于关系基数和/或主键的信息可用时生成优化的查询。
在一些实施方式中,当计算度量子树分量时,系统会拉入可以经由多对一链接或一对一链接的链而到达的表。为了说明,对于上面参考图7描述的州和行项目子查询,一些实施方式利用所有链接都是多对一的事实来扩展度量子树以包括所有表。图10A中所示的这个查询比以前更简单。特别地,与图7中的查询不同,图10A中所示的查询没有任何“分组”操作(例如,操作704)。一些实施方式在不知道边的所有基数的情况下执行这种优化。例如,优化只需要知道表502、504、508和512之间的三个关系是多对一的,但它不需要知道关于树(图5A中所示的对象模型)的其余部分的任何信息。即使利用部分信息,一些实施方式也能生成优化的查询。例如,如果已知行项目-订单链接是多对一的,那么一些实施方式会通过将行项目表和订单表包含在度量子树中并将地址表联接到度量子树中的州表,来执行部分优化。
在一些实施方式中,如果维度/度量子树只沿着多对一链接和一对一链接与度量子树进行联接,则在计算度量子树时,由度量和维度/度量子树共享的表的集合被去重的维度/度量子树替换。为了说明,对于上面参考图8B描述的示例中的查询,如果已知地址和州之间的关系是多对一的,则一些实施方式会简化查询,如图10B所示。这种优化基于这样一个事实,即维度-度量子树只经由多对一链接(在本例中是地址-州)而链接到度量子树。
组合子查询
给定维度子树和用于每个聚合度量的子树,一些实施方式使用外联接来组合这些查询以形成最终查询。一些实施方式在可视化中的维度上进行联接,并且在每个联接之后,在每个维度的左实例和右实例上应用COALESCE。图11A示出了数据可视化1100,该数据可视化1100显示按地区和类别分组的(上面描述的)人口和销售额的总和。一些实施方式组合子查询以形成最终查询1102(如图11B所示),用于图11A所示的可视化。在一些实施方式中,每个子查询(例如,子查询1104和1106)具有不同的域。图11C示出了根据一些实施方式的关于维度子查询(对于图11B中的示例)的数据可视化1120。图11D示出了根据一些实施方式的关于对销售额总和的子查询(带有维度)的数据可视化1130。图11E示出了根据一些实施方式的关于对人口总和的子查询(带有维度)的数据可视化1140。
在一些实施方式中,外联接确保在至少一个子查询中出现的维度的所有组合被表示。coalesce确保在联接之后,对于每个维度的所有非空值被表示。例如,当在人口子查询中对查询的其余部分进行联接时,(地区,类别)=(中部,空)只出现在外联接的右侧。如果选择维度的左侧版本,这将导致错误的结果(空,空)。类似地,如果选择了维度的右侧版本,那么将从销售额总和子查询中产生(空,家具)。
一些实施方式对于不具有维度的可视化(例如,对于图11F所示的可视化1150,对应于销售额和人口的总和),执行度量子查询之间的全联接。
一些实施方式基于复杂查询的对象模型生成可视化。为了进行说明,假设用户创建了跨逻辑表的计算,诸如[税收调整后的销售额]=[销售额]*[销售额税率]。这里,[销售额]来自行项目表502,而[销售额税率]来自州表512。假设查询还包括[细分部分]=‘总店(Home Office)’AND[地区]=‘东部’的过滤器谓词计算,其中[细分部分]来自客户表510,[地区]来自地址表508。现在,进一步假设用户想要创建按类别分组的可视化SUM([税收调整后的销售额]),其中过滤器谓词为真。图12A示出了根据一些实施方式使用本文描述的技术生成的数据可视化1200。
假设关系基数未知,一些实施方式生成图12B中所示的最终查询1202,来以其原生粒度计算度量。对于这个示例,物理联接树包括行项目表502、订单表504、地址表508和州表512(用于度量)、产品表506(用于维度)和客户表510(我们需要其来用于过滤器)。度量是逻辑字段,它跨越行项目表、订单表、地址表和州表。度量子树包括内联接在一起的这些表。一些实施方式还在[税收调整后的销售额]的定义上进行分层。
一些实施方式从两个维度子树开始:产品和客户。由于谓词上的过滤器从客户跨越到地址,因此一些实施方式生成订单、地址和客户的维度-度量子树。对于与类别相对应的子树,一些实施方式按类别和链接键(产品PK)对产品进行分组,并将其左联接到度量子树。对于维度-度量子树,一些实施方式将来自度量子树中的表内联接在一起,并左联接客户。一些实施方式添加过滤器谓词逻辑字段并应用过滤器。过滤器谓词是在度量子树[地区]中使用物理输入的计算。因此,一些实施方式在来自客户-订单链接(因为它是仅维度对象链接到度量对象的链接)和[地区]中的关系字段上使这个子树去重。一些实施方式也使用这些字段将维度-度量子树与查询的其余部分联接起来。
一些实施方式简化了上面参考图12B描述的查询。如果已知订单-客户链接是多对一的,那么一些实施方式通过消除维度子查询的需要来简化查询(因为已知客户可以被安全地联接到度量子树而不会影响粒度,如上面参考图10A所述)。图12C示出了根据一些实施方式的优化的查询1204的示例。类似地,如果已知行项目-产品链接是多对一的,则一些实施方式应用类似的逻辑来甚至进一步减少或简化查询,如图12D中的优化的查询1206所示。
图13A-图13D提供了根据一些实施方式的、用于根据上述技术使用对象模型生成(1302)数据可视化的方法1300的流程图。该方法1300在具有一个或更多个处理器和存储器的计算设备200处被执行(1304)。存储器存储(1306)被配置为由一个或更多个处理器执行的一个或更多个程序。
该计算机接收(1308)视觉规范104,视觉规范104指定一个或更多个数据源106、多个视觉变量282、和来自一个或更多个数据源106的多个数据字段284。每个视觉变量282与(i)数据字段284中相应的一个或更多个数据字段或(ii)一个或更多个过滤器相关联,并且数据字段284中的每一个被识别为维度或度量。在一些实施方式中,视觉规范104包括一个或更多个附加的视觉变量,该一个或更多个附加的视觉变量不与来自一个或更多个数据源106的任何数据字段330相关联。在一些实施方式中,每个视觉变量282是以下中的一者:行属性、列属性、过滤器属性、颜色编码、大小编码、形状编码、或标签编码。
计算机获得(1310)将数据源编码为逻辑表的树的数据模型。每个逻辑表都有其自己的物理表示,并包括各自的一个或更多个逻辑字段。每个逻辑字段对应于数据字段或对应于跨越一个或更多个逻辑表的计算。树的每条边连接相关的两个逻辑表。计算机基于为维度和过滤器提供数据字段的逻辑表来生成(1312)维度子查询。在一些实施方式中,计算机通过内联接(1314)逻辑表的树中的第一一个或更多个逻辑表来生成维度子查询,其中第一一个或更多个逻辑表中的每个逻辑表提供用于维度或过滤器的数据字段。
计算机还基于为各个度量和过滤器提供数据字段的逻辑表,为每个度量生成(1316)按维度分组的聚合度量子查询。
接下来参考图13B,计算机通过使用维度将维度子查询联接到聚合度量子查询中的每一个来形成(1318)最终查询。在一些实施方式中,计算机通过使用外联接在维度上联接(1320)维度子查询和聚合度量子查询,并在每个外联接之后应用COALESCE,来形成最终查询。在一些实施方式中,当可视化没有维度时,计算机执行(1322)聚合度量子查询之间的全联接以形成最终查询。一些实施方式使用具有空模式和单行的特殊表(在一些Tableau产品中被称为Table Dee)来表示没有维度的可视化,并通过检查维度子查询中的基表是否是该特殊表来确定给定的可视化是否没有维度。一些实施方式还将特殊表用于常量值。例如,SUM(1)被估值为在特殊表的顶部投射的值1。由于特殊表只有一行,所以SUM(1)估值为值1。在一些实施方式中,如果逻辑字段的输入都不属于任何表,则使用特殊表对该字段进行估值。
计算机随后对数据源执行(1324)最终查询,以检索包含对于数据字段的数据值的不同有序组合的元组。计算机然后根据元组中的数据字段并根据每个数据字段所关联到的视觉变量来构建并(例如,在用于计算设备200的图形用户界面102中)显示(1326)数据可视化。
接下来参考图13C,在一些实施方式中,计算机通过执行一系列操作来生成每个聚合度量子查询。计算机计算(1328)逻辑表的树的度量子树。度量子树是为相应度量提供数据字段所需的最小子树。在一些实施方式中,计算机通过内联接度量子树中的逻辑表来编译(1330)度量子树,以获得度量联接树。使用内联接有助于确保联接的顺序无关紧要,从而在计算粒度时提供一致的语义。内联接为度量提供原生级别的粒度。只有当度量子树是计算时,度量子树中才会有多个表。但是,大多数情况下,度量子树包括单个表。当计算的字段跨越多个表时,该字段的原生粒度是其联接在一起的输入。计算机还从逻辑表的树计算(1332)维度过滤器子树。维度过滤器子树是为维度和过滤器提供所有物理输入所需的最小子树。(对于非计算的维度字段,物理输入是维度字段本身。对于计算的维度,物理输入是计算该维度所需的所有数据字段。)在一些实施方式中,计算机通过内联接(1334)在维度-过滤器子树中与度量子树共享的逻辑表并且左联接在维度-过滤器子树中不与度量子树共享的逻辑表,来计算维度-过滤器子树,从而获得维度-过滤器联接树。假设存在跨越多对一关系的多个表的计算的维度。对于可以被组合的行的每一个不同组合,都需要该计算的单独实例。内联接产生行的该集合。
当维度-过滤器子树不与度量子树共享任何逻辑表时,计算机将来自度量子树的相邻逻辑表添加(1336)到维度-过滤器子树。计算机编译(1338)度量子树以获得度量联接树,并编译维度-过滤器子树以获得维度-过滤器联接树。接下来参考图13D,计算机在度量联接树和维度-过滤器联接树上对计算和过滤器进行分层(1340),以分别获得更新的度量子树和更新的维度-过滤器子树。计算机通过应用分组操作(GB)来对更新的维度-过滤器子树去重(1342)以获得去重的维度-过滤器子树,该分组操作使用维度和链接字段,该链接字段包括(i)来自逻辑表之间的关系(例如,主键等于外键)的键和(ii)与度量子树共享的计算的数据字段。假设存在作为计算的维度。进一步假设该计算具有物理输入字段(有时被称为数据字段),这些物理输入字段位于维度-过滤器子树的度量部分中。这些字段也是链接字段。分组操作查找维度的独特集合。一些实施方式使用链接字段来联接回来(joinback)。在一些情况下,当存在与度量子树共享字段的计算时,一些实施方式恢复度量来自于的独特行。在这样的实例中,联接类似于将度量子树的主键类打包(quasi-packing)在一起来起作用。
计算机随后将去重的维度-过滤器子树与更新的度量子树进行组合(1344),以获得聚合度量子查询。
在存在主键的情况下,一些实施方式不使用维度-过滤器子树。在这种情况下,一些实施方式将度量子树的所有表的主键组合在一起。
在一些实施方式中,计算机通过执行一系列操作将去重的维度-过滤器子树与更新的度量子树进行组合。计算机确定去重的维度-过滤器子树是否包含过滤器。当去重的维度-过滤器子树包含过滤器时,计算机将更新的度量子树与去重的维度-过滤器子树进行内联接(1346)。当去重的维度-过滤器子树不包含过滤器时,计算机将更新的度量子树与去重的维度-过滤器子树进行左外联接(1348)。
在一些实施方式中,计算机确定键是否指示第一逻辑表和第二逻辑表之间的多对一关系或一对一关系。当键指示第一逻辑表和第二逻辑表之间的多对一关系时,计算机在度量子树中包括(1350)第一表和第二表,从而避免了在对第一逻辑表和第二逻辑表的去重操作中的分组。
在一些实施方式中,当维度-过滤器子树仅沿着多对一链接和一对一链接对度量子树进行联接时,计算机用去重的维度-过滤器子树替换(1352)由度量子树和维度-过滤器子树共享的表。
在本发明的描述中使用的术语仅为了描述特定实施方式的目的,且并不意欲限制本发明。如在本发明的描述和所附的权利要求中所使用的,单数形式“a”、“an”、和“the”意欲也包括复数形式,除非上下文另外清楚地指示。还要理解的是,如在本文使用的术语“和/或(and/or)”指相关联的所列出的项目中的一个或更多个的任何和所有可能的组合并包括这些组合。应当进一步理解,术语“包括(comprises)”和/或“包括(comprising)”当在本说明书中使用时,指定所陈述的特征、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或更多个其它特征、步骤、操作、元件、部件和/或它们的组。
为了解释的目的,前面的描述参考了特定的实施方式进行描述。然而,上面的说明性讨论并没有被规定为无遗漏的或将本发明限制到所公开的精确形式。鉴于上面的教导,许多修改和变形是可能的。实施方式被选择和描述是为了最好地解释本发明的原理及其实际应用,以从而使本领域中的其他技术人员能够以适合于所设想的特定用途的各种修改最好地利用本发明和各种实施方式。

Claims (20)

1.一种生成数据可视化的方法,包括:
在具有显示器、一个或更多个处理器和存储器的计算机处执行下列操作,所述存储器存储被配置为由所述一个或更多个处理器执行的一个或更多个程序:
接收视觉规范,所述视觉规范指定数据源、多个视觉变量和来自所述数据源的多个数据字段,其中,所述视觉变量中的每一个与(i)所述数据字段中相应的一个或更多个数据字段或者(ii)一个或更多个过滤器相关联,并且所述数据字段中的每一个被识别为维度或度量;
获得将所述数据源编码为逻辑表的树的数据模型,每个逻辑表具有其自己的物理表示并包括相应的一个或更多个逻辑字段,每个逻辑字段对应于数据字段或者对应于跨越一个或更多个逻辑表的计算,其中,所述树的每条边连接相关的两个逻辑表;
基于为所述维度和所述过滤器提供所述数据字段的逻辑表来生成维度子查询;
基于为相应度量和所述过滤器提供所述数据字段的逻辑表,为每个度量生成按所述维度分组的聚合度量子查询;
通过使用所述维度将所述维度子查询联接到所述聚合度量子查询中的每一个来形成最终查询;
对所述数据源执行所述最终查询,以检索包含对于所述数据字段的数据值的不同有序组合的元组;以及
根据所述元组中的数据字段并根据所述数据字段中的每一个所关联到的视觉变量,建立并显示数据可视化。
2.根据权利要求1所述的方法,其中,生成每个聚合度量子查询包括:
计算所述逻辑表的树的度量子树,其中,所述度量子树是为相应度量提供所述数据字段所需的最小子树;
计算所述逻辑表的树的维度-过滤器子树,其中,所述维度-过滤器子树是为所述维度和所述过滤器提供所有物理输入所需的最小子树;
根据所述维度-过滤器子树不与所述度量子树共享任何逻辑表的确定,将来自所述度量子树的相邻逻辑表添加到所述维度-过滤器子树;
编译所述度量子树以获得度量联接树,并且编译所述维度-过滤器子树以获得维度-过滤器联接树;
在所述度量联接树和所述维度-过滤器联接树上对计算和过滤器进行分层,以分别获得更新的度量子树和更新的维度-过滤器子树;
通过应用分组操作来对所述更新的维度-过滤器子树去重,以获得去重的维度-过滤器子树,所述分组操作使用所述维度和链接字段,所述链接字段包括(i)来自所述逻辑表之间的关系的键和(ii)与所述度量子树共享的计算的数据字段;和
将所述去重的维度-过滤器子树与所述更新的度量子树进行组合,以获得所述聚合度量子查询。
3.根据权利要求2所述的方法,其中,编译所述度量子树包括内联接所述度量子树中的逻辑表,以获得所述度量联接树。
4.根据权利要求2所述的方法,其中,计算所述维度-过滤器子树包括内联接在所述维度-过滤器子树中与所述度量子树共享的逻辑表,并且左联接在所述维度-过滤器子树中不与所述度量子树共享的逻辑表,以获得所述维度-过滤器联接树。
5.根据权利要求2所述的方法,其中,将所述去重的维度-过滤器子树与所述更新的度量子树进行组合包括:
确定所述去重的维度-过滤器子树是否包含过滤器;
根据所述去重的维度-过滤器子树包含过滤器的确定,将所述更新的度量子树与所述去重的维度-过滤器子树进行内联接;以及
根据所述去重的维度-过滤器子树不包含过滤器的确定,将所述更新的度量子树与所述去重的维度-过滤器子树进行左外联接。
6.根据权利要求2所述的方法,还包括:
根据所述键指示所述第一逻辑表和所述第二逻辑表之间的多对一关系的确定,在所述度量子树中包括所述第一表和所述第二表,从而避免了在对所述第一逻辑表和所述第二逻辑表的去重操作中的分组。
7.根据权利要求2所述的方法,还包括:
根据所述维度-过滤器子树仅沿着多对一链接和一对一链接对所述度量子树进行联接的确定,用所述去重的维度-过滤器子树替代由所述度量子树和所述维度-过滤器子树共享的表。
8.根据权利要求1所述的方法,其中,生成所述维度子查询包括内联接所述逻辑表的树中的第一一个或更多个逻辑表,其中,所述第一一个或更多个逻辑表中的每个逻辑表提供用于维度或过滤器的数据字段。
9.根据权利要求1所述的方法,其中,形成所述最终查询包括:使用外联接在所述维度上联接所述维度子查询和所述聚合度量子查询,并且在每个外联接之后应用COALESCE。
10.根据权利要求1所述的方法,其中,形成所述最终查询包括:根据所述可视化不具有维度的确定,在所述聚合度量子查询之间执行全外联接。
11.一种用于生成数据可视化的计算机系统,包括:
一个或更多个处理器;以及
存储器;
其中,所述存储器存储被配置为由所述一个或更多个处理器执行的一个或更多个程序,并且所述一个或更多个程序包括用于执行下列操作的指令:
接收视觉规范,所述视觉规范指定数据源、多个视觉变量和来自所述数据源的多个数据字段,其中,所述视觉变量中的每一个与(i)
所述数据字段中相应的一个或更多个数据字段或者(ii)一个或更多个过滤器相关联,并且所述数据字段中的每一个被识别为维度或度量;
获得将所述数据源编码为逻辑表的树的数据模型,每个逻辑表具有其自己的物理表示并包括相应的一个或更多个逻辑字段,每个逻辑字段对应于数据字段或者对应于跨越一个或更多个逻辑表的计算,其中,所述树的每条边连接相关的两个逻辑表;
基于为所述维度和所述过滤器提供所述数据字段的逻辑表来生成维度子查询;
基于为相应度量和所述过滤器提供所述数据字段的逻辑表,为每个度量生成按所述维度分组的聚合度量子查询;
通过使用所述维度将所述维度子查询联接到所述聚合度量子查询中的每一个来形成最终查询;
对所述数据源执行所述最终查询,以检索包含对于所述数据字段的数据值的不同有序组合的元组;以及
根据所述元组中的数据字段并根据所述数据字段中的每一个所关联到的视觉变量,建立并显示数据可视化。
12.根据权利要求11所述的计算机系统,其中,生成每个聚合度量子查询包括:
计算所述逻辑表的树的度量子树,其中,所述度量子树是为相应度量提供所述数据字段所需的最小子树;
计算所述逻辑表的树的维度-过滤器子树,其中,所述维度-过滤器子树是为所述维度和所述过滤器提供所有物理输入所需的最小子树;
根据所述维度-过滤器子树不与所述度量子树共享任何逻辑表的确定,将来自所述度量子树的相邻逻辑表添加到所述维度-过滤器子树;
编译所述度量子树以获得度量联接树,并且编译所述维度-过滤器子树以获得维度-过滤器联接树;
在所述度量联接树和所述维度-过滤器联接树上对计算和过滤器进行分层,以分别获得更新的度量子树和更新的维度-过滤器子树;
通过应用分组操作来对所述更新的维度-过滤器子树去重,以获得去重的维度-过滤器子树,所述分组操作使用所述维度和链接字段,所述链接字段包括(i)来自所述逻辑表之间的关系的键和(ii)与所述度量子树共享的计算的物理输入字段;以及
将所述去重的维度-过滤器子树与所述更新的度量子树进行组合,以获得所述聚合度量子查询。
13.根据权利要求12所述的计算机系统,其中,编译所述度量子树包括内联接所述度量子树中的逻辑表,以获得所述度量联接树。
14.根据权利要求12所述的计算机系统,其中,编译所述维度-过滤器子树包括内联接在所述维度-过滤器子树中与所述度量子树共享的逻辑表,并左联接在所述维度-过滤器子树中不与所述度量子树共享的逻辑表,以获得所述维度-过滤器联接树。
15.根据权利要求12所述的计算机系统,其中,将所述去重的维度-过滤器子树与所述更新的度量子树进行组合包括:
确定所述去重的维度-过滤器子树是否包含过滤器;
根据所述去重的维度-过滤器子树包含过滤器的确定,将所述更新的度量子树与所述去重的维度-过滤器子树进行内联接;以及
根据所述去重的维度-过滤器子树不包含过滤器的确定,将所述更新的度量子树与所述去重的维度-过滤器子树进行左外联接。
16.根据权利要求12所述的计算机系统,其中,所述一个或更多个程序还包括用于执行下列操作的指令:
确定所述键是否指示第一逻辑表和第二逻辑表之间的多对一关系或一对一关系;以及
根据所述键指示所述第一逻辑表和所述第二逻辑表之间的多对一关系的确定,在所述度量子树中包括所述第一表和所述第二表,从而避免了在对所述第一逻辑表和所述第二逻辑表的去重操作中的分组。
17.根据权利要求12所述的计算机系统,其中,所述一个或更多个程序还包括用于执行下列操作的指令:
根据所述维度-过滤器子树仅沿着多对一链接和一对一链接对所述度量子树进行联接的确定,用所述去重的维度-过滤器子树替代由所述度量子树和所述维度-过滤器子树共享的表。
18.根据权利要求11所述的计算机系统,其中,生成所述维度子查询包括内联接所述逻辑表的树中的第一一个或更多个逻辑表,其中,所述第一一个或更多个逻辑表中的每个逻辑表提供用于维度或过滤器的数据字段。
19.根据权利要求11所述的计算机系统,其中,形成所述最终查询包括:使用外联接在所述维度上联接所述维度子查询和所述聚合度量子查询,并且在每个外联接之后应用COALESCE。
20.一种非暂时性计算机可读存储介质,其存储被配置为由具有显示器、一个或更多个处理器和存储器的计算机系统执行的一个或更多个程序,所述一个或更多个程序包括用于执行下列操作的指令:
接收视觉规范,所述视觉规范指定数据源、多个视觉变量和来自所述数据源的多个数据字段,其中,所述视觉变量中的每一个与(i)所述数据字段中相应的一个或更多个数据字段或者(ii)一个或更多个过滤器相关联,并且所述数据字段中的每一个被识别为维度或度量;
获得将所述数据源编码为逻辑表的树的数据模型,每个逻辑表具有其自己的物理表示并包括相应的一个或更多个逻辑字段,每个逻辑字段对应于数据字段或者对应于跨越一个或更多个逻辑表的计算,其中,所述树的每条边连接相关的两个逻辑表;
基于为所述维度和所述过滤器提供所述数据字段的逻辑表来生成维度子查询;
基于为相应度量和所述过滤器提供所述数据字段的逻辑表,为每个度量生成按所述维度分组的聚合度量子查询;
通过使用所述维度将所述维度子查询联接到所述聚合度量子查询中的每一个来形成最终查询;
对所述数据源执行所述最终查询,以检索包含对于所述数据字段的数据值的不同有序组合的元组;以及
根据所述元组中的数据字段并根据所述数据字段中的每一个所关联到的视觉变量,建立并显示数据可视化。
CN202080077078.7A 2019-09-13 2020-08-07 利用适当的度量聚合生成多事实数据集的数据可视化 Pending CN114616558A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/570,969 2019-09-13
US16/570,969 US11966406B2 (en) 2018-10-22 2019-09-13 Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
PCT/US2020/045461 WO2021050182A1 (en) 2019-09-13 2020-08-07 Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets

Publications (1)

Publication Number Publication Date
CN114616558A true CN114616558A (zh) 2022-06-10

Family

ID=72266808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080077078.7A Pending CN114616558A (zh) 2019-09-13 2020-08-07 利用适当的度量聚合生成多事实数据集的数据可视化

Country Status (7)

Country Link
EP (1) EP4028902A1 (zh)
JP (1) JP7383799B2 (zh)
CN (1) CN114616558A (zh)
AU (1) AU2020344465B2 (zh)
BR (1) BR112022004439A2 (zh)
CA (1) CA3153691C (zh)
WO (1) WO2021050182A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113239081A (zh) * 2021-05-21 2021-08-10 瀚云科技有限公司 一种流式数据计算方法
CN113434790B (zh) * 2021-06-16 2023-07-25 北京百度网讯科技有限公司 重复链接的识别方法、装置及电子设备
CN115062133A (zh) * 2022-08-17 2022-09-16 广州思迈特软件有限公司 基于数据模型的数据查询方法、装置、计算机设备及介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089266B2 (en) 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
JP2005321849A (ja) * 2004-05-06 2005-11-17 Fujitsu Ltd データ分析支援プログラム、データ分析支援方法、およびデータ分析支援装置
US7302447B2 (en) * 2005-01-14 2007-11-27 International Business Machines Corporation Virtual columns
US8898145B2 (en) * 2011-06-15 2014-11-25 Microsoft Corporation Query optimization techniques for business intelligence systems
US9613086B1 (en) * 2014-08-15 2017-04-04 Tableau Software, Inc. Graphical user interface for generating and displaying data visualizations that use relationships
US11620315B2 (en) * 2017-10-09 2023-04-04 Tableau Software, Inc. Using an object model of heterogeneous data to facilitate building data visualizations
US11036735B2 (en) * 2018-01-16 2021-06-15 Oracle International Corporation Dimension context propagation techniques for optimizing SQL query plans

Also Published As

Publication number Publication date
CA3153691C (en) 2024-06-11
WO2021050182A1 (en) 2021-03-18
EP4028902A1 (en) 2022-07-20
JP7383799B2 (ja) 2023-11-20
CA3153691A1 (en) 2021-03-18
JP2022547519A (ja) 2022-11-14
AU2020344465B2 (en) 2024-02-15
AU2020344465A1 (en) 2022-03-31
BR112022004439A2 (pt) 2022-06-21

Similar Documents

Publication Publication Date Title
US11966406B2 (en) Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
CN111542813B (zh) 使用异构数据的对象模型来便于建立数据可视化
US11615112B2 (en) Interactive visual analysis of datasets using a specialized virtual machine
US11210316B1 (en) Join key recovery and functional dependency analysis to generate database queries
US10380140B2 (en) Systems and methods for implementing a virtual machine for interactive visual analysis
CN114730313B (zh) 视觉分析具有多行计算的数据可视化的方法和用户界面
AU2020344465B2 (en) Utilizing appropriate measure aggregation for generating data visualizations of multi-fact datasets
US20240095227A1 (en) Chart engine
US20230070159A1 (en) Database modification using a script component
Kopaczyk Scalable In-Memory Aggregation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination