CN114051613A - 在连接来自数据库的工作表时保持行的基数 - Google Patents
在连接来自数据库的工作表时保持行的基数 Download PDFInfo
- Publication number
- CN114051613A CN114051613A CN202080048717.7A CN202080048717A CN114051613A CN 114051613 A CN114051613 A CN 114051613A CN 202080048717 A CN202080048717 A CN 202080048717A CN 114051613 A CN114051613 A CN 114051613A
- Authority
- CN
- China
- Prior art keywords
- row
- value
- worksheet
- database
- column
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在连接来自数据库的工作表的同时保持行的基数包括:接收将来自所述数据库的第二工作表连接到第一工作表的请求;对于所述第一工作表中的每一行:为来自所述数据库的所述第二工作表中的数据生成连接行;响应于确定所述数据库的第二工作表中存在至少一个匹配行:比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及在所述第一工作表中的相应行旁边显示连接行。
Description
技术领域
本发明的领域是数据处理,或者更具体地说,是用于在连接来自数据库的工作表时保持行的基数的方法、装置和产品。
背景技术
现代企业可以在基于云的数据仓库内的远程数据库中存储大量数据。可以使用数据库查询语言,例如结构化查询语言(SQL)来访问该数据。然而,很少有用户能够充分利用存储在数据库中的所有信息。此外,操作存储在数据库中的数据可能需要构建超出大多数用户能力的复杂查询。
发明内容
用于在连接来自数据库的工作表的同时保持行的基数的方法、系统和装置。在连接来自数据库的工作表的同时保持行的基数包括:接收将来自所述数据库的第二工作表连接到第一工作表的请求;对于所述第一工作表中的每一行:为来自所述数据库的所述第二工作表中的数据生成连接行;响应于确定所述数据库的第二工作表中存在至少一个匹配行:比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及在所述第一工作表中的相应行旁边显示连接行。
本发明的上述和其它目的、特征和优点将从下面对本发明的示例性的实施方案的更具体的描述中变得显而易见,如附图中所示,其中相同的附图标记通常表示本发明的示例性的实施方案的相同部分。
附图说明
图1示出了根据本发明的实施方案的示例性系统的框图,该示例性系统被配置用于在连接来自数据库的工作表的同时保持行的基数。
图2示出了根据本发明的实施方案的示例性系统的框图,该示例性系统被配置用于在连接来自数据库的工作表的同时保持行的基数。
图3示出了根据本发明的实施方案的示例性系统的框图,该示例性系统被配置用于在连接来自数据库的工作表的同时保持行的基数。
图4示出了流程图,其说明了根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的示例性方法。
图5示出了流程图,其说明了根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的示例性方法。
图6示出了流程图,其说明了根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的示例性方法。
具体实施方式
参考附图,从图1开始,描述了用于在根据本发明的用于在连接来自数据库的工作表的同时保持行的基数的示例性方法、装置和产品。图1示出了根据本发明的实施方案的自动计算机器的框图,该自动计算机器包括被配置为用于在连接来自数据库的工作表的同时保持行的基数的示例性连接模块计算系统(152)。图1的连接模块计算系统(152)包括至少一个计算机处理器(156)或“CPU”,以及通过高速存储器总线(166)和总线适配器(158)连接到处理器(156)和连接模块计算系统(152)的其它部件的随机存取存储器(168)(“RAM”)。
存储在RAM(168)中的是操作系统(154)。根据本发明的实施方案的被配置成用于在连接来自数据库的工作表的同时保持行的基数的计算机中有用的操作系统包括UNIXTM、LinuxTM、Microsoft WindowsTM、AIXTM、IBM的i OSTM;以及本领域技术人员会想到的其它操作系统。图1的示例中的操作系统(154)在RAM(168)中示出,但是这种软件的许多组件通常也存储在非易失性存储器中,例如,存储在数据存储器(170)上,例如磁盘驱动器上。连接模块(126)也被存储在RAM中,根据本发明的实施方案,该连接模块(126)是用于在连接来自数据库的工作表的同时保持行的基数的模块。
图1的连接模块计算系统(152)包括通过扩展总线(160)和总线适配器(158)耦合到处理器(156)和连接模块计算系统(152)的其它部件的盘驱动器适配器(172)。盘驱动器适配器(172)以数据存储器(170)的形式将非易失性数据存储器连接到连接模块计算系统(152)。根据本发明的实施方案,可用于配置成用于在连接来自数据库的工作表的同时保持行的基数的计算机中的盘驱动器适配器包括集成驱动器电子设备(“IDE”)适配器,小型计算机系统接口(‘SCSI’)适配器,以及本领域技术人员将想到的其它适配器。如本领域技术人员可想到的,非易失性计算机存储器也可以实现为光盘驱动器,电可擦除可编程只读存储器(所谓的“EEPROM”;或“闪存”存储器),RAM驱动器等。
图1的示例性连接模块计算系统(152)包括一个或多个输入/输出(‘I/O’)适配器(178)。I/O适配器通过例如软件驱动器和计算机硬件实现面向用户的输入/输出,用于控制对诸如计算机显示屏之类的显示设备的输出,以及来自诸如键盘和鼠标之类的用户输入设备(181)的用户输入。图1的示例性连接模块计算系统(152)包括视频适配器(209),该视频适配器是专门设计用于图形输出到诸如显示屏或计算机监视器之类的显示设备(180)的I/O适配器的示例。视频适配器(209)通过高速视频总线(164)、总线适配器(158)和也是高速总线的前侧总线(162)连接到处理器(156)。
图1的示例性连接模块计算系统(152)包括用于与其它计算机进行数据通信以及用于与数据通信网络进行数据通信的通信适配器(167)。这样的数据通信可以通过RS-232连接,通过诸如通用串行总线(‘USB’)之类的外部总线,通过诸如IP数据通信网络之类的数据通信网络,以及以本领域技术人员可想到的其它方式串行地执行。通信适配器实现数据通信的硬件级别,一台计算机通过该数据通信直接或通过数据通信网络发送数据通信至另一台计算机。根据本发明的实施方案的被配置成用于在连接来自数据库的工作表的同时保持行的基数的计算机中有用的通信适配器的示例包括:用于有线拨号通信的调制解调器、用于有线数据通信的以太网(IEEE802.3)适配器、以及用于无线数据通信的802.11适配器。
通信适配器(167)通信地耦合到广域网(190),广域网(190)还包括基于云的数据仓库(192)和客户端系统(194)。基于云的数据仓库(192)是托管用于通过广域网(190)访问的数据库的计算系统或计算系统组。客户端系统(194)是使用连接模块计算系统(152)上的连接模块(126)访问数据库的计算系统。
图2示出了根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的系统的示例性框图。如图2所示,该系统包括客户端计算系统(194)、连接模块计算系统(152)和基于云的数据仓库。客户端计算系统(194)包括图形用户界面(GUI)(202)。连接模块计算系统(152)包括连接模块(126)和本地存储装置(204)。基于云的数据仓库(192)包括数据库(206)。
GUI(202)是向用户呈现数据集和图形元素并从该用户接收用户输入的用户界面。GUI(202)可以部分地由连接模块(126)呈现并显示在客户端计算系统(194)上(例如,在系统显示器或移动触摸屏上)。GUI(202)可以是托管在连接模块计算系统(152)上并呈现在客户端计算系统(194)上的互联网应用程序。
GUI(202)部分地向用户呈现工作表。工作表是来自数据库(206)的数据集(例如表格)的呈现。GUI使用工作表元数据中的信息呈现工作表。工作表元数据是描述工作表的数据。具体地,工作表元数据可以包括数据集的描述、要应用于数据集的公式以及数据集的呈现结构。数据集的描述描述了通过数据库查询请求哪些数据。数据集的描述可以包括要通过数据库查询从数据库(206)中检索哪些数据列和行。要应用于数据集的公式可以包括对数据集中接收到的列和行中的数据的操作。此类操作可以包括将公式应用于数据集中的数据的计算列。
数据集的呈现结构可以包括由用户做出的呈现选择。呈现结构可以包括列之间的层级关系、应用于数据的过滤器以及对数据进行分类的方式。数据集的呈现结构还可以包括数据集中的特定数据的GUI可见性。GUI可见性可以基于数据的过滤器设置或数据集中的列的可见性状态(例如,隐藏或未隐藏)而改变。数据集的呈现结构还可能包括工作表的格式,例如行和列的大小。
连接模块(126)是硬件、软件或硬件和软件的集合,其被配置为接收将来自所述数据库的第二工作表连接到第一工作表的请求;对于所述第一工作表中的每一行:为来自所述数据库的所述第二工作表中的数据生成连接行;响应于确定所述数据库的第二工作表中存在至少一个匹配行:
比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及在所述第一工作表中的相应行旁边显示连接行。连接模块(126)可以是生成数据库查询的数据库查询生成器的一部分。
本地存储装置(204)是用于存储诸如连接行和工作表元数据之类的数据的储存库。数据库(206)是数据的集合和数据的管理系统。管理系统可以接收数据库查询,例如结构查询语言(SQL)查询,并且用数据集响应查询。
图3示出了根据本发明的实施方案的示例性图形用户界面(GUI),其用于在连接来自数据库的工作表时维持行的基数。如图3所示,示例性GUI(202)包括电子表格结构(302)和列表结构(304)。电子表格结构(302)包括具有六列(列A(306A)、列B(306B)、列C(306C)、列D(306D)、列E(306E)、列F(306F))的数据集(显示为空行)。
电子表格结构(302)是数据集的图形元素和组织机制。电子表格结构(302)将数据集中的数据显示为按列(列A(306A)、列B(306B)、列C(306C)、列D(306D)、列E(306E)、列F(306F))组织的数据行。这些列描述了数据集的每一行中数据的不同类别。这些列也可以是使用数据集中其他列的计算。
列表结构(304)是用于定义和组织数据集的列(列A(306A)、列B(306B)、列C(306C)、列D(306D)、列E(306E)、列F(306F))之间的层级关系的图形元素。术语“层级关系”是指列的下级和上级分组。例如,数据库可能包括地址簿的行,以及州、县、城市和街道的列。来自数据库的数据集可以首先按州分组,然后按县分组,然后按城市分组。因此,州列将在层级关系中处于最高级别,县列将在层级关系中处于第二级别,而城市列将在层级关系中处于最低级别。
列表结构(304)向用户呈现维度层级。具体地,列表结构(304)呈现跨至少一个维度分层排列的级别。列表结构(304)内的每一级别是列(列A(306A)、列B(306B)、列C(306C)、列D(306D)、列E(306E)、列F(306F))之间的层级关系内的位置。列表结构(304)内的关键字标识作为层级关系中的参与者的一列或多列。每个级别可能有多于一个的关键字。
列表结构(304)中的级别之一可以是基本级别。为基本级别选择的列以最精细的粒度提供数据。列表结构(304)中的级别之一可以是总级别或根级别。为总级别选择的列提供最高粒度级别的数据。例如,总级别可以包括字段,该字段计算整个数据集的单个列内的每一行的总和(即,未被任何其他列划分)
GUI(202)可以使用户能够将列(列A(306A)、列B(306B)、列C(306C)、列D(306D)、列E(306E)、列F(306F))拖放到列表结构(304)中。列表结构(304)的顺序可以指定列相对于彼此的层级结构。用户可以随时拖放列表结构(304)中的列以重新定义列之间的层级关系。使用选择作为列表结构(304)中的关键字的列定义的层级关系可以在图表中使用,以便向下钻取(例如,双击条)使得新的图表能够基于层次结构中较低的级别来生成。
为了进一步说明,图4阐述了说明根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的示例性方法的流程图,该方法包括接收(402)将来自数据库(206)的第二工作表连接到第一工作表的请求(420)。接收(402)将来自数据库(206)的第二工作表连接到第一工作表的请求(420)可以由连接模块(126)来执行,其通过GUI(202)接收引用第一工作表和第二工作表的请求(420)以及将工作表连接在一起的指令。该请求可以包括关于第一工作表和第二工作表的信息,例如对数据库(206)上的表或其他数据集的引用以及表或数据集中要包括的行和列的描述。
该请求还可以包括连接键或外键。连接键是第一列(即值)中的一行与第二列或列组中的另一行之间的链接。连接键可以使用来自不同表中的两列的匹配值来设置,或者可以通过将一个表中的一列中的值与不同表中的另一列中的不同值相关联来设置。连接键连接两列数据的方式称为连接模式。连接键可以包括值和行之间的多个链接。连接两个表的数据源工作表可以从呈现中排除任一表中的任何列,包括包含为连接键选择的值的列,而无需更改连接键。
连接键不同于在数据库中用于创建表之间的关系的外键。具体而言,当在数据库(206)内定义外键以创建两个表之间的关系时,在数据库(206)之外(例如,在连接模块计算系统(152)上)定义连接键。连接键可以创建数据库未考虑的表之间的关系,并且可以以数据库未考虑的连接模式实现。
例如,考虑以下两个表:
表1
<u>客户名称</u> | <u>客户ID</u> |
Aaron Anderson | 101 |
Bonnie Burke | 102 |
Carl Cavender | 103 |
Donny Deacon | 104 |
Edward Ellis | 105 |
表2
<u>客户ID</u> | <u>订单ID</u> | <u>项目类别</u> | <u>订购项目</u> | <u>订购数量</u> |
101 | X87 | 小部件 | 小部件A | 5 |
103 | X02 | 齿轮 | 齿轮C | 10 |
103 | X65 | 齿轮 | 齿轮C | 10 |
103 | X10 | 齿轮 | 齿轮C | 10 |
104 | X77 | 工具 | 工具F | 1 |
104 | X77 | [空] | 设备A | 1 |
105 | X92 | [空] | 设备A | 5 |
106 | X35 | 小部件 | 小部件B | 7 |
表1和表2示出了来自数据库(206)上的表的数据的工作表呈现。连接模块(126)可以接收对表1的引用和对表2的引用作为请求的一部分(420)。引用可以是对数据库中的表或数据集的引用。请求(420)还可以将客户ID列标识为连接键或外键。
图4的方法还包括对于第一工作表(404)中的每一行:为来自数据库(206)上的第二工作表的数据生成(406)连接行。为来自数据库(206)上的第二工作表的数据生成(406)连接行可以由连接模块(126)执行,连接模块(126)创建由连接模块(126)使用的空数据结构来存储连接行的数据,然后在GUI内呈现(202)。连接行是与第一工作表中的行对应的行,其用于存储第二工作表中的列的数据。
图4的方法还包括确定(408)在数据库(206)上的第二工作表中存在至少一个匹配行。确定(408)在数据库(206)上的第二工作表中存在至少一个匹配行可以通过连接模块(126)来执行,连接模块(126)查询数据库(206)以确定是否存在与第一工作表中的行对应的(例如,由连接键或外键链接的)行。
图4的方法还包括比较(410)至少一个匹配行中的每一行中的每一列的最大值和最小值。比较(410)至少一个匹配行中的每一行中的每一列的最大值和最小值可以由连接模块(126)计算每个匹配行的列的最大和最小值来执行。计算每个匹配行的列的最大和最小值可以包括遍历(iterate through)列中的每一行并将该值与当前存储的最小值或最大值进行比较。如果新值超过当前最大值或低于当前最小值,则将该值存储为新的最大值或最小值。然后该过程继续到列中的下一行。可以为空值分配一个值,例如极端相等值(例如,最大可能值或最小可能值)。遍历整个列后,比较最大值和最小值。
计算每个匹配行的列的最大和最小值避免了对数据库的昂贵操作,例如对表中的行进行排序。尽管存在用于确定列是否包含唯一值的其他机制,但大多数可能是低效的数据库操作。
图4的方法还包括:如果最大值和最小值匹配,则在连接行的对应列中存储(412)匹配值。确定最大值和最小值匹配可以由连接模块(126)比较最大值和最小值并确定这两个值相等来执行。确定这两个值相等可以包括:确定这两个值是相同的。确定这两个值相等可替代地包括:使用匹配策略,例如确定这两个值之间的差异在阈值容差内。例如,在比较最大值和最小值时可以忽略小数点。
在连接行的对应列中存储(412)匹配值可以通过将与两个值相同的值放置在连接行的对应列中来执行。替代地,在连接行的对应列中存储(412)匹配值可以通过根据匹配策略放置与最大值和最小值匹配的值来执行。匹配值可以等于最大值、最小值或基于匹配策略的值。例如,如果最大值为2.2,最小值为2.1,则存储的匹配值可能为2。
图4的方法还包括:如果最大值和最小值不匹配,则在连接行的对应列中存储(414)多值指示。确定最大值和最小值不匹配可以通过连接模块(126)比较最大值和最小值并确定这两个值不相等来执行。确定这两个值相等可以包括确定这两个值不相同。确定两个值不相等可替代地包括使用匹配策略,例如确定这些值之间的差异在阈值容差之外。
至少一列的最大值和最小值中的至少一个可以包括空值。在确定最大值和最小值时可以考虑空值。具体而言,包括至少一个空值和至少一个非空值的列可能不会导致确定最大值和最小值匹配或者匹配值被放置在连接行的对应列中。
在连接行的对应列中存储(414)多值指示可以通过连接模块(126)在连接行的对应列中放置列包括多于一个的值的指示来执行。多值指示是元素、值或符号,其向用户表示匹配行的列包括多于一个的值(或超过阈值的不同的值)。多值指示可以传达相应列中不同值的数量。例如,多值指示可以是“<<4>>”以指示列中的四个不同值。
多值指示还可以包括访问对应列中的每个唯一值的列表的机制。在连接行的对应列中存储(414)多值指示可以通过从数据库中检索对应列中的每个唯一值并将每个唯一值存储在本地来执行。然后可以将到唯一值的列表的链接存储在连接行的对应列中,从而向激活链接的用户呈现唯一值的列表。该列表还可以包括每个值的出现次数。
上述步骤,例如步骤408、410、412和414,可以包括生成SQL查询以检索和操作数据库(206)上的数据。例如,可以生成SQL查询来查询受成组的匹配行限制的列,以获取该列中的最小值和最大值。
图4的方法还包括呈现(416)与第一工作表中的对应行相邻的连接行。呈现(416)与第一工作表中的对应行相邻的连接行可以通过连接模块(126)将连接行中的值放置在第一工作表中的对应行旁边来执行。
表3
<u>客户名称</u> | <u>客户ID</u> | <u>订购ID</u> | <u>项目类别</u> | <u>订购项目</u> | <u>订购数量</u> |
Aaron Anderson | 101 | X87 | 小部件 | 小部件A | 5 |
Bonnie Burke | 102 | [空] | [空] | [空] | [空] |
Carl Cavender | 103 | @ | 齿轮 | 齿轮C | 10 |
Donny Deacon | 104 | X77 | @ | @ | 1 |
Edward Ellis | 105 | X92 | [空] | 设备A | 5 |
表3显示了使用上述步骤得到的连接工作表的示例。假设用户已请求使用客户ID作为连接键将表1中所示的工作表与表2中所示的工作表连接起来。从客户ID 101开始,连接模块(126)确定每列的最大值和最小值并比较这些值。由于表2中只有一个匹配行,因此每个最大值和最小值都匹配,并将这些值放在相应的列中。
继续客户ID 102,连接模块(126)确定在第二工作表中没有匹配的行。因此,在连接行的每一列中放置空值。继续使用客户ID 103,连接模块(126)确定在第二工作表中有三个匹配的行。对于订单ID栏,最大值(“X65”)与最小值(“X02”)不匹配,对应栏中放置多值指示(“@”)。对于项目类别列,最大值(“齿轮”)与最小值(“齿轮”)匹配,因此匹配值(“齿轮”)放置在相应的列中。对于订购项目列,最大值(“齿轮C”)与最小值(“齿轮C”)匹配,因此匹配值(“齿轮C”)放置在相应的列中。对于订购数量列,最大值(“10”)与最小值(“10”)匹配,因此匹配值(“10”)放置在相应的列中。
继续客户ID 104,连接模块(126)确定在第二工作表中有两个匹配的行。对于订单ID列,最大值(“X77”)与最小值(“X77”)匹配,因此在相应的列中放置匹配值(“X77”)。对于项目类别列,最大值(“工具”)与最小值(“空”)不匹配,对应的列中放置了多值指示(“@”)。对于订购项目列,最大值(“工具F”)与最小值(“设备A”)不匹配,多值指示(“@”)放置在对应的列中。对于订购数量列,最大值(“1”)与最小值(“1”)匹配,因此匹配值(“1”)放置在相应的列中。
最后,对于客户ID 105,连接模块(126)确定表2中只有一个匹配行,每个最大值和最小值匹配(包括空值),并将这些值放入对应的列中。注意,没有将客户ID 106行中的数据添加到第一工作表中,因为第一工作表不包含客户ID 106的行。
上述限制通过在将两工作表连接在一起时保持行的基数来改进计算机系统的操作。具体而言,上述步骤提供了一种机制,用户可以通过该机制将一工作表连接到另一工作表,而无需更改该工作表中的行数。此过程可防止第一工作表中假定工作表中有特定行数的计算和公式中断。
为了进一步说明,图5阐述了说明根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的另一示例性方法的流程图,该方法包括:接收(402)将来自数据库(206)的第二工作表连接到第一工作表的请求(420);对于第一工作表(404)中的每一行:为数据库(206)的所述第二工作表中的数据生成(406)连接行;响应于确定(408)数据库(206)的第二工作表中存在至少一个匹配行:比较(410)至少一个匹配行中的每一行中每一列的最大值和最小值;如果最大值和最小值匹配,则在连接行的对应列中存储(412)匹配值;以及如果最大值和最小值不匹配,则在连接行的对应列中存储(414)多值指示;以及在第一工作表中的相应行旁边显示(416)连接行。
然而,图5的方法与图4的方法的不同之处在于,图5的方法还包括,响应于确定第二工作表中没有匹配的行,在连接行的每一列中存储(502)空值。确定第二工作表中没有匹配的行可以通过连接模块(126)查询第二工作表(或构成第二工作表的数据库上的数据)关于与连接键或外键匹配的行并且接收不存在这样的行的指示来执行。在连接行的每一列中存储(502)空值可以通过连接模块(126)将空值或空指示符(例如,“空”、空白等)放置在连接行的每一对应列中来执行。
为了进一步解释,图6阐述了说明根据本发明的实施方案的用于在连接来自数据库的工作表的同时保持行的基数的另一示例性方法的流程图,该方法包括:接收(402)将来自数据库(206)的第二工作表连接到第一工作表的请求(420);对于第一工作表(404)中的每一行:为数据库(206)的第二工作表中的数据生成(406)连接行;响应于确定(408)数据库(206)的第二工作表中存在至少一个匹配行:比较(410)至少一个匹配行中的每一行中每一列的最大值和最小值;如果最大值和最小值匹配,则在连接行的对应列中存储(412)匹配值;以及如果最大值和最小值不匹配,则在连接行的对应列中存储(414)多值指示;以及在第一工作表中的相应行旁边显示(416)连接行。
然而,图6的方法与图4的方法的不同之处在于,图6的方法还包括在图形用户界面(202)中呈现(602)第一工作表和连接行。在图形用户界面(202)中呈现(602)第一工作表和连接行可以由连接模块(126)将连接行和第一工作表作为用于呈现给用户的表发送到GUI(202)来执行。
鉴于以上阐述的解释,读者将认识到根据本发明的实施方案的在连接来自数据库的工作表时保持行的基数的好处包括:
·通过在将两工作表连接在一起时保持行的基数来改进计算系统的操作,从而提高计算系统的功能和效率。
·通过在用户工作表和数据库之间提供SQL转换层来改进计算系统的操作,从而增加计算系统的功能和可用性。
本发明的示例性的实施方案主要在用于在连接来自数据库的工作表的同时保持行的基数的全功能计算机系统的上下文中描述。然而,本领域的技术人员将认识到,本发明也可以体现在设置在计算机可读存储介质上的计算机程序产品中,以与任何合适的数据处理系统一起使用。这样的计算机可读存储介质可以是用于机器可读信息的任何存储介质,包括磁性介质、光学介质或其它合适的介质。这样的介质的示例包括硬盘驱动器中的磁盘或软盘,用于光驱的光盘,磁带,以及本领域技术人员所想到的其它介质。本领域技术人员将立即认识到,具有适当编程装置的任何计算机系统将能够执行体现在计算机程序产品中的本发明的方法的步骤。本领域的技术人员还将认识到,尽管本说明书中描述的一些示例性的实施方案是针对在计算机硬件上安装和执行的软件,然而,实现为固件或硬件的替代的实施方案也完全在本发明的范围之内。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或媒介)。
计算机可读存储介质可以是有形设备,其可以保留和存储由指令执行设备使用的指令。所述计算机可读存储介质可以是,例如,但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述设备的任何适当组合。计算机可读存储介质的更具体示例的非穷举列表包括以下项:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用盘(DVD),存储棒、软盘、例如在其上记录有指令的打孔卡或凹槽中的凸起结构之类的机械编码设备、以及上述的任何适当组合。如本文所使用的,计算机可读存储介质,不应被解释为本身是瞬时信号,例如无线电波或其它自由传播的电磁波,通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲),或通过导线传输的电信号。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。该网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明操作的计算机可读程序指令可以是汇编器指令,指令集体系结构(ISA)指令,机器指令,机器相关指令,微码,固件指令,状态设置数据,或者用一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk,C++等)和常规过程编程语言(例如,“C”编程语言或类似编程语言)的任意组合来编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,作为独立的软件包,部分在用户的计算机上执行,部分在用户的计算机上且部分在远程计算机上执行,或全部在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以进行到外部计算机的连接(例如,通过使用互联网服务提供商的互联网)。在一些实施方案中,包括(例如)可编程逻辑电路,现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)在内的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令,以使电子电路个性化,从而执行本发明的各个方面。
参考根据本发明的实施方案的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图图示和/或框图的每个框,以及流程图图示和/或框图中的框的组合,可以通过计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其它可编程数据处理装置,以产生机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令也可以被存储在能够引导计算机、可编程数据处理设备和/或以特定方式工作的其它设备的计算机可读存储介质中,使得其中存储有指令的计算机可读存储介质包括制造的产品,该制造的产品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。
计算机可读程序指令也可以加载到计算机,其它可编程数据处理装置,或使一系列操作步骤在计算机上执行的其它设备,用于产生计算机实现的过程的其它可编程设备或其它装置上,使得在计算机、其它可编程装置或其它设备上执行的指令实现流程图和/或框图的一或多个框中指定的功能/动作。
图中的流程图和框图示出了根据本发明的各种的实施方案的系统、方法和计算机程序产品的可能实现方式的体系结构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代的实现方式中,框中指出的功能可以不按照图中指出的顺序发生。例如,实际上根据所涉及的功能,连续示出的两个框可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意到,框图和/或流程图图示的每个框,以及框图和/或流程图图示中的框的组合,可以由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
从前面的描述中应当理解,在不偏离本发明的真实精神的情况下,可以在本发明的各种实施方案中进行修改和改变。本说明书中的描述仅是为了说明的目的,而不应被解释为限制性的。本发明的范围仅由所附权利要求的语言限定。
Claims (20)
1.一种在连接来自数据库工作表时保持行的基数的方法,所述方法包括:
接收将来自所述数据库的第二工作表连接到第一工作表的请求;
对于所述第一工作表中的每一行:
为来自所述数据库的所述第二工作表中的数据生成连接行;
响应于确定所述数据库的第二工作表中存在至少一个匹配行:
比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;
如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及
如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及
在所述第一工作表中的相应行旁边显示连接行。
2.根据权利要求1所述的方法,其还包括:
响应于确定所述第二工作表中没有匹配行,在所述连接行的每一列中存储空值。
3.根据权利要求1所述的方法,其还包括:
在图形用户界面中显示所述第一工作表和所述连接行。
4.根据权利要求1所述的方法,其中,所述多值指示包括访问所述对应列中的每个唯一值的列表的机制。
5.根据权利要求1所述的方法,其中,至少一列的所述最大值和所述最小值中的至少一者包括空值。
6.根据权利要求1所述的方法,其中在所述连接行的所述对应列中存储所述多值指示包括从所述数据库中检索所述对应列中的每个唯一值并将每个唯一值存储在本地。
7.根据权利要求1所述的方法,其中,所述多值指示传送所述对应列中的不同值的数量。
8.一种用于在连接来自数据库的工作表时保持行的基数的装置,所述装置包括计算机处理器、能操作地耦合到所述计算机处理器的计算机存储器,所述计算机存储器在其中设置有计算机程序指令,所述计算机程序指令当由该计算机处理器执行时使所述装置执行以下步骤:
接收将来自所述数据库的第二工作表连接到第一工作表的请求;
对于所述第一工作表中的每一行:
为来自所述数据库的所述第二工作表中的数据生成连接行;
响应于确定所述数据库的第二工作表中存在至少一个匹配行:
比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;
如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及
如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及
在所述第一工作表中的相应行旁边显示连接行。
9.根据权利要求8所述的装置,其中所述计算机程序指令进一步使所述装置执行以下步骤:
响应于确定所述第二工作表中没有匹配行,在所述连接行的每一列中存储空值。
10.根据权利要求8所述的装置,其中所述计算机程序指令进一步使所述装置执行以下步骤:
在图形用户界面中显示所述第一工作表和所述连接行。
11.根据权利要求8所述的装置,其中,所述多值指示包括访问所述对应列中的每个唯一值的列表的机制。
12.根据权利要求8所述的装置,其中,至少一列的所述最大值和所述最小值中的至少一者包括空值。
13.根据权利要求8所述的装置,其中在所述连接行的所述对应列中存储所述多值指示包括从所述数据库中检索所述对应列中的每个唯一值并将每个唯一值存储在本地。
14.根据权利要求8所述的装置,其中,所述多值指示传送所述对应列中的不同值的数量。
15.一种用于在连接来自数据库的工作表的同时保持行的基数的计算机程序产品,所述计算机程序产品设置在计算机可读介质上,所述计算机程序产品包括计算机程序指令,所述计算机程序指令在执行时使计算机执行以下步骤:
接收将来自所述数据库的第二工作表连接到第一工作表的请求;
对于所述第一工作表中的每一行:
为来自所述数据库的所述第二工作表中的数据生成连接行;
响应于确定所述数据库的第二工作表中存在至少一个匹配行:
比较所述至少一个匹配行中的每一行中每一列的最大值和最小值;
如果所述最大值和所述最小值匹配,则在所述连接行的对应列中存储匹配值;以及
如果所述最大值和所述最小值不匹配,则在所述连接行的所述对应列中存储多值指示;以及
在所述第一工作表中的相应行旁边显示连接行。
16.根据权利要求15所述的计算机程序产品,其中所述计算机程序指令进一步使所述计算机执行以下步骤:
响应于确定所述第二工作表中没有匹配行,在所述连接行的每一列中存储空值。
17.根据权利要求15所述的计算机程序产品,其中所述计算机程序指令进一步使所述计算机执行以下步骤:
在图形用户界面中显示所述第一工作表和所述连接行。
18.根据权利要求15所述的计算机程序产品,其中,所述多值指示包括访问所述对应列中的每个唯一值的列表的机制。
19.根据权利要求15所述的计算机程序产品,其中,至少一列的所述最大值和所述最小值中的至少一者包括空值。
20.根据权利要求15所述的计算机程序产品,其中在所述连接行的所述对应列中存储所述多值指示包括从所述数据库中检索所述对应列中的每个唯一值并将每个唯一值存储在本地。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962841615P | 2019-05-01 | 2019-05-01 | |
US62/841,615 | 2019-05-01 | ||
PCT/US2020/030738 WO2020223493A1 (en) | 2019-05-01 | 2020-04-30 | Maintaining cardinality of rows while joining worksheets from a database |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114051613A true CN114051613A (zh) | 2022-02-15 |
CN114051613B CN114051613B (zh) | 2023-08-25 |
Family
ID=70775544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048717.7A Active CN114051613B (zh) | 2019-05-01 | 2020-04-30 | 在连接来自数据库的工作表时保持行的基数 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11269887B2 (zh) |
EP (1) | EP3963470A1 (zh) |
CN (1) | CN114051613B (zh) |
WO (1) | WO2020223493A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886462B2 (en) * | 2021-12-09 | 2024-01-30 | Microsoft Technology Licensing, Llc | Intelligent transformation of multidimensional data for automatic generation of pivot tables |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140095502A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Clustering a table in a relational database management system |
US20150220600A1 (en) * | 2014-01-31 | 2015-08-06 | Oracle International Corporation | Efficient set operation execution using a single group-by operation |
CN108090224A (zh) * | 2018-01-05 | 2018-05-29 | 星环信息科技(上海)有限公司 | 一种级联连接方法及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8347204B2 (en) * | 2008-05-05 | 2013-01-01 | Norm Rosner | Method and system for data analysis |
US9678935B2 (en) * | 2012-07-09 | 2017-06-13 | Salesforce.Com, Inc. | Facilitating dynamic cross-block joining of reports in an on-demand services environment |
US11227104B2 (en) * | 2014-05-11 | 2022-01-18 | Informatica Llc | Composite data creation with refinement suggestions |
US9633072B1 (en) * | 2016-01-27 | 2017-04-25 | International Business Machines Corporation | MIN/MAX query with synopsis guided scan order |
-
2020
- 2020-04-30 EP EP20727062.0A patent/EP3963470A1/en active Pending
- 2020-04-30 CN CN202080048717.7A patent/CN114051613B/zh active Active
- 2020-04-30 US US16/862,953 patent/US11269887B2/en active Active
- 2020-04-30 WO PCT/US2020/030738 patent/WO2020223493A1/en unknown
-
2022
- 2022-02-28 US US17/682,866 patent/US20220179855A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140095502A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Clustering a table in a relational database management system |
US20150220600A1 (en) * | 2014-01-31 | 2015-08-06 | Oracle International Corporation | Efficient set operation execution using a single group-by operation |
CN108090224A (zh) * | 2018-01-05 | 2018-05-29 | 星环信息科技(上海)有限公司 | 一种级联连接方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200349153A1 (en) | 2020-11-05 |
US11269887B2 (en) | 2022-03-08 |
WO2020223493A1 (en) | 2020-11-05 |
CN114051613B (zh) | 2023-08-25 |
EP3963470A1 (en) | 2022-03-09 |
US20220179855A1 (en) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868351B1 (en) | Dashboard loading from a cloud-based data warehouse cache | |
US20200301938A1 (en) | Cross-organization worksheet sharing | |
CN113228002B (zh) | 使用图形用户界面内的维度层次结构生成数据库查询 | |
CN113260987A (zh) | 生成数据库查询以动态地聚合数据集的行 | |
CN114080599A (zh) | 动态归一化表中的区间 | |
US11281672B2 (en) | Join key propagation | |
US11860873B2 (en) | Dashboard loading using a filtering query from a cloud-based data warehouse cache | |
US11989183B2 (en) | Linking data sets | |
US20220179855A1 (en) | Maintaining cardinality of rows while joining worksheets from a database | |
CN114127723A (zh) | 使用轻量级引用来呈现工作表 | |
US20220188323A1 (en) | Creating a model data set using a spreadsheet interface | |
US11494400B2 (en) | Servicing database requests using subsets of canonicalized tables | |
US11934404B2 (en) | Servicing database requests using canonicalized tables | |
US11954087B2 (en) | Servicing database requests using derivations of canonicalized tables | |
CN115298678A (zh) | 跟踪数据集血缘关系中的错误 | |
CN113614708A (zh) | 链接和编写工作表 | |
CN114766021A (zh) | 管理工作表访问 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |