# US 2021/0334288 A1 · Methods and systems for data wrangling

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0334288 A1
- Document ID: US20210334288A1
- Status: Published application
- Kind: A1
- Application number: 17/237,218
- Filed: 2021-04-22
- Published: 2021-10-28
- Earliest claimed: 2020-04-24
- Assignees: MicroStrategy Incorporated
- Applicants: MicroStrategy Incorporated
- Inventors: Ruiqing Xu; Xi Kou; Xiaoqian Zhu
- Web page: https://patentgrep.com/patent/US20210334288A1

## CPC

- G06F 16/254: {Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses}
- G06F 16/283: {Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP}
- G06F 16/2264: {Multidimensional index structures}
- G06F 16/2282: {Tablespace storage structures; Management thereof}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 16/24554: {Unary operations; Data partitioning operations}
- G06F 16/285: {Clustering or classification}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Disclosed are methods, systems, and computer-readable medium for data wrangling. For instance, the method may include: determining one or more data operations to be performed on a multi-dimensional dataset; determining at least one operation type associated with the one or more data operations to be performed; dividing the multi-dimensional dataset into a plurality of sub-tables based on the operation type; providing the plurality of sub-tables to a data wrangling process, the one or more data operations being performed on each of the plurality of sub-tables in parallel to determine a processed plurality of sub-tables; and determining, based on the processed plurality of sub-tables, a finished multi-dimensional dataset. The data wrangling process may process sub-tables (e.g., change-only columns/rows) of tables of the multi-dimensional dataset and/or process sub-tables in parallel for data operations that are not related.

## Claims

### Claim 1

A method for data wrangling, comprising:
determining one or more data operations to be performed on a multi-dimensional dataset;
determining at least one operation type associated with the one or more data operations to be performed;
dividing the multi-dimensional dataset into a plurality of sub-tables based on the operation type;
providing the plurality of sub-tables to a data wrangling process, the one or more data operations being performed on each of the plurality of sub-tables in parallel to determine a processed plurality of sub-tables; and
determining, based on the processed plurality of sub-tables, a finished multi-dimensional dataset.

### Claim 2 (depends on 1)

The method of claim 1, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset.

### Claim 3 (depends on 1)

The method of claim 1, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings.

### Claim 4 (depends on 1)

The method of claim 1, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein determining groupings of operations further comprises:
determining at least one operation of the one or more data operations to be performed on a column or row; and
determining at least two operations of the one or more data operations to be performed on adjacent columns or rows, and/or
determining a plurality of operations of the one or more data operations to be performed on columns or rows within a threshold number of columns or rows from each other.

### Claim 5 (depends on 1)

The method of claim 1, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein the extracting the sub-tables includes:
extracting columns or rows associated with a grouping based on the columns or rows targeted by the groupings of the operations.

### Claim 6 (depends on 1)

The method of claim 1, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset, and
wherein the re-joining the processed plurality of sub-tables to the multi-dimensional dataset comprises:
extracting the processed plurality of sub-stables from the completion message(s); and
updating tables of the multi-dimensional dataset based on the processed plurality of sub-tables.

### Claim 7 (depends on 1)

The method of claim 1, further comprising, before determining the one or more data operations:
receiving imported data; and
generating an initial multi-dimensional dataset based on the imported data and/or determining an existing multi-dimensional dataset to be updated based on the imported data, the initial multi-dimensional dataset or the existing multi-dimensional dataset being the multi-dimensional dataset upon which the one or more data operations are performed.

### Claim 8

A system for data wrangling, the system comprising:
at least one memory storing instructions; and
at least one processor executing the instructions to perform operations, the operations including:
determining one or more data operations to be performed on a multi-dimensional dataset;
determining at least one operation type associated with the one or more data operations to be performed;
dividing the multi-dimensional dataset into a plurality of sub-tables based on the operation type;
providing the plurality of sub-tables to a data wrangling process, the one or more data operations being performed on each of the plurality of sub-tables in parallel to determine a processed plurality of sub-tables; and
determining, based on the processed plurality of sub-tables, a finished multi-dimensional dataset.

### Claim 9 (depends on 8)

The system of claim 8, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset.

### Claim 10 (depends on 8)

The system of claim 8, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings.

### Claim 11 (depends on 8)

The system of claim 8, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein determining groupings of operations further comprises:
determining at least one operation of the one or more data operations to be performed on a column or row; and
determining at least two operations of the one or more data operations to be performed on adjacent columns or rows, and/or
determining a plurality of operations of the one or more data operations to be performed on columns or rows within a threshold number of columns or rows from each other.

### Claim 12 (depends on 8)

The system of claim 8, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein the extracting the sub-tables includes:
extracting columns or rows associated with a grouping based on the columns or rows targeted by the groupings of the operations.

### Claim 13 (depends on 8)

The system of claim 8, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset, and
wherein the re-joining the processed plurality of sub-tables to the multi-dimensional dataset comprises:
extracting the processed plurality of sub-stables from the completion message(s); and
updating tables of the multi-dimensional dataset based on the processed plurality of sub-tables.

### Claim 14 (depends on 8)

The system of claim 8, the operations further comprising, before determining the one or more data operations:
receiving imported data; and
generating an initial multi-dimensional dataset based on the imported data and/or determining an existing multi-dimensional dataset to be updated based on the imported data, the initial multi-dimensional dataset or the existing multi-dimensional dataset being the multi-dimensional dataset upon which the one or more data operations are performed

### Claim 15

A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform operations data wrangling, the operations comprising:
determining one or more data operations to be performed on a multi-dimensional dataset;
determining at least one operation type associated with the one or more data operations to be performed;
dividing the multi-dimensional dataset into a plurality of sub-tables based on the operation type;
providing the plurality of sub-tables to a data wrangling process, the one or more data operations being performed on each of the plurality of sub-tables in parallel to determine a processed plurality of sub-tables; and
determining, based on the processed plurality of sub-tables, a finished multi-dimensional dataset.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset.

### Claim 17 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings.

### Claim 18 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein determining groupings of operations further comprises:
determining at least one operation of the one or more data operations to be performed on a column or row; and
determining at least two operations of the one or more data operations to be performed on adjacent columns or rows, and/or
determining a plurality of operations of the one or more data operations to be performed on columns or rows within a threshold number of columns or rows from each other.

### Claim 19 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein dividing the multi-dimensional dataset into the plurality of sub-tables based on the operation type further comprises:
splitting the multi-dimensional dataset into tables;
determining groupings of operations based on columns and/or rows of the tables targeted by the data operations;
extracting the sub-tables from the tables based on the groupings; and
determining scripts for each of the sub-tables based on the groupings, and
wherein the extracting the sub-tables includes:
extracting columns or rows associated with a grouping based on the columns or rows targeted by the groupings of the operations.

### Claim 20 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein dividing the multi-dimensional dataset and providing the plurality of sub-tables to a data wrangling process further comprise:
determining scripts and sub-tables based on operation type;
extracting the sub-tables from the multi-dimensional dataset;
transmitting the scripts and sub-tables to a server, the server processing the sub-tables in parallel using the scripts and sub-tables to determine the processed plurality of sub-tables;
receiving completion message(s) from the server, the completion message(s) including the processed plurality of sub-tables; and
re-joining the processed plurality of sub-tables to the multi-dimensional dataset, and
wherein the re-joining the processed plurality of sub-tables to the multi-dimensional dataset comprises:
extracting the processed plurality of sub-stables from the completion message(s); and
updating tables of the multi-dimensional dataset based on the processed plurality of sub-tables.
