IP Library › Granted Patent US 12,405,955
Granted Patent B2
US 12,405,955 · App. 18/751,452 · Granted Sep 2, 2025

Automatically transforming data into a compacted electronic data structure

Inventors: Qing Gong (Cary, NC); Murilo Machado Brizzotti (Cary, NC); Kimberly W. Lewis (Morehead City, NC); David C. Applegate (Sparta, NC); Chad Delano Peterson (Cary, NC)
Assignee: SAS INSTITUTE, INC.
G06F16/2455G06F16/248G06F16/81
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,405,955
App. No.
18/751,452
Granted
Sep 2, 2025
Kind
B2
Abstract

One example described herein can involve a system that receives, from a user, a structured document that describes one or more conditions selected by the user to customize one or more electronic data structures. The system can also query a database to retrieve data from the database. The system can then execute an interpreter program, which can ingest the structured document and the data, identify a subset of the data that satisfies the condition(s), and generate the one or more electronic data structures based on the subset of the data. The electronic data structure(s) can include the identified subset of the data and exclude a remainder of the data. The system can compact the electronic data structure(s) by removing empty fields therein. The system can then provide the compacted data structure(s) to the user.

Claims (62)

1. A method comprising:

receiving, by one or more processors, a predefined structured document drafted by a user in a human-readable declarative language, wherein the predefined structured document is a transferrable file, wherein the structured document describes one or more conditions selected by the user to customize one or more electronic data structures, wherein the one or more conditions are defined in the structured document using the human-readable declarative language, and wherein the one or more conditions specify variable values selected by the user for inclusion in the one or more electronic data structures;

querying, by the one or more processors, a database to retrieve data from the database, wherein the querying is performed independently of the one or more conditions expressed in the predefined structured document;

ingesting, by an interpreter program executing on the one or more processors, the structured document and the data;

filtering, by the interpreter program, the data retrieved from the database based on the one or more conditions specified in the structured document to identify a subset of the data that satisfies the one or more conditions;

generating, by the interpreter program executing on the one or more processors, the one or more electronic data structures based on the subset of the data, wherein the one or more electronic data structures include the identified subset of the data and exclude a remainder of the data;

after generating the one or more electronic data structures, compacting, by the one or more processors, the one or more electronic data structures by removing empty fields from the one or more electronic data structures, to thereby generate one or more compacted data structures; and

providing, by the one or more processors, the one or more compacted data structures to the user.

2. The method of claim 1 , further comprising:

determining a first format of the data;

determining, based on the structured document, a second format in which the data is to be organized in the one or more electronic data structures; and

selecting the interpreter program from among a plurality of interpreter programs based on the first format of the data and the second format for the one or more electronic data structures, wherein each interpreter program of the plurality of interpreter programs is configured to process input data in a respective input format and output corresponding data structures in a respective output format.

3. The method of claim 1 , wherein the one or more conditions include a particular value for a particular variable being present in the data.

4. The method of claim 1 , wherein the one or more conditions include a particular type of variable being present in the data.

5. The method of claim 1 , wherein the one or more conditions include a particular data range used for splitting the data into at least two electronic data structures.

6. The method of claim 1 , wherein providing the one or more compacted data structures to the user involves exporting the one or more compacted data structures to a file as one or more spreadsheets.

7. The method of claim 1 , wherein providing the one or more compacted data structures to the user involves outputting the one or more compacted data structures as one or more tables in a graphical user interface that is presented to the user.

8. The method of claim 1 , wherein the one or more electronic data structures include at least two electronic spreadsheets.

9. The method of claim 1 , wherein the human-readable declarative language is eXtensible Markup Language (XML) or JavaScript Object Notation (JSON).

10. The method of claim 1 , wherein the data is organized in the one or more electronic data structures in a second format that is different from a first format of the data.

11. A non-transitory computer-readable medium comprising program code that is executable by one or more processors for causing the one or more processors to perform operations including:

receiving a predefined structured document drafted by a user in a human-readable declarative language, wherein the predefined structured document is a transferrable file, wherein the structured document describes one or more conditions selected by the user to customize one or more electronic data structures, wherein the one or more conditions are defined in the structured document using the human-readable declarative language, and wherein the one or more conditions specify variable values selected by the user for inclusion in the one or more electronic data structures;

querying a database to retrieve data from the database, wherein the querying is performed independently of the one or more conditions expressed in the predefined structured document;

ingesting, by an interpreter program, the structured document and the data;

filtering, by the interpreter program, the data retrieved from the database based on the one or more conditions specified in the structured document to identify a subset of the data that satisfies the one or more conditions;

generating, by the interpreter program, the one or more electronic data structures based on the subset of the data, wherein the one or more electronic data structures include the identified subset of the data and exclude a remainder of the data;

after generating the one or more electronic data structures, compacting the one or more electronic data structures by removing empty fields from the one or more electronic data structures, to thereby generate one or more compacted data structures; and

providing the one or more compacted data structures to the user.

12. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

determining a first format of the data;

determining, based on the structured document, a second format in which the data is to be organized in the one or more electronic data structures; and

selecting the interpreter program from among a plurality of interpreter programs based on the first format of the data and the second format for the one or more electronic data structures, wherein each interpreter program of the plurality of interpreter programs is configured to process input data in a respective input format and output corresponding data structures in a respective output format.

13. The non-transitory computer-readable medium of claim 11 , wherein the one or more conditions include a particular value for a particular variable being present in the data.

14. The non-transitory computer-readable medium of claim 11 , wherein the one or more conditions include a particular type of variable being present in the data.

15. The non-transitory computer-readable medium of claim 11 , wherein the one or more conditions include a particular data range used for splitting the data into at least two electronic data structures.

16. The non-transitory computer-readable medium of claim 11 , wherein providing the one or more compacted data structures to the user involves exporting the one or more compacted data structures to a file as one or more spreadsheets.

17. The non-transitory computer-readable medium of claim 11 , wherein providing the one or more compacted data structures to the user involves outputting the one or more compacted data structures as one or more tables in a graphical user interface that is presented to the user.

18. The non-transitory computer-readable medium of claim 11 , wherein the one or more electronic data structures include at least two electronic spreadsheets, and wherein the empty fields include empty rows or empty columns of the at least two electronic spreadsheets.

19. The non-transitory computer-readable medium of claim 11 , wherein the human-readable declarative language is eXtensible Markup Language (XML) or JavaScript Object Notation (JSON).

20. The non-transitory computer-readable medium of claim 11 , wherein the data is organized in the one or more electronic data structures in a second format that is different from a first format of the data.

21. A system comprising:

one or more processors; and

one or more memories comprising program code that is executable by the one or more processors for causing the one or more processors to perform operations including:

receiving a predefined structured document drafted by a user in a human-readable declarative language, wherein the predefined structured document is a transferrable file, wherein the structured document describes one or more conditions selected by the user to customize one or more electronic data structures, wherein the one or more conditions are defined in the structured document using the human-readable declarative language, and wherein the one or more conditions specify variable values selected by the user for inclusion in the one or more electronic data structures;

querying a database to retrieve data from the database, wherein the querying is performed independently of the one or more conditions expressed in the predefined structured document;

ingesting, by an interpreter program, the structured document and the data;

filtering, by the interpreter program, the data retrieved from the database based on the one or more conditions specified in the structured document to identify a subset of the data that satisfies the one or more conditions;

generating, by the interpreter program, the one or more electronic data structures based on the subset of the data, wherein the one or more electronic data structures include the identified subset of the data and exclude a remainder of the data;

after generating the one or more electronic data structures, compacting the one or more electronic data structures by removing empty fields from the one or more electronic data structures, to thereby generate one or more compacted data structures; and

providing the one or more compacted data structures to the user.

22. The system of claim 21 , wherein the operations further comprise:

determining a first format of the data;

determining, based on the structured document, a second format in which the data is to be organized in the one or more electronic data structures; and

selecting the interpreter program from among a plurality of interpreter programs based on the first format of the data and the second format for the one or more electronic data structures, wherein each interpreter program of the plurality of interpreter programs is configured to process input data in a respective input format and output corresponding data structures in a respective output format.

23. The system of claim 21 , wherein the one or more conditions include a particular value for a particular variable being present in the data.

24. The system of claim 21 , wherein the one or more conditions include a particular type of variable being present in the data.

25. The system of claim 21 , wherein the one or more conditions include a particular data range used for splitting the data into at least two electronic data structures.

26. The system of claim 21 , wherein providing the one or more compacted data structures to the user involves exporting the one or more compacted data structures to a file as one or more spreadsheets.

27. The system of claim 21 , wherein providing the one or more compacted data structures to the user involves outputting the one or more compacted data structures as one or more tables in a graphical user interface that is presented to the user.

28. The system of claim 21 , wherein the one or more electronic data structures include at least two electronic spreadsheets.

29. The system of claim 21 , wherein the human-readable declarative language is eXtensible Markup Language (XML) or JavaScript Object Notation (JSON).

30. The system of claim 21 , wherein the data is organized in the one or more electronic data structures in a second format that is different from a first format of the data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2024
From: GONG, QING; BRIZZOTTI, MURILO MACHADO; LEWIS, KIMBERLY W.; APPLEGATE, DAVID C.; PETERSON, CHAD DELANO
To: SAS INSTITUTE INC.
Reel/Frame 067810/0781 →
Continuity (2)
Provisional Application 63548780 · Feb 1, 2024
Related Publication 20250252104A1 · Aug 7, 2025
References Cited (23)
US 7743071B2 · Yang et al. · 2010 [cited by applicant]
US 9128908B2 · Weller · 2015 [cited by applicant]
US 9223847B2 · Aski et al. · 2015 [cited by applicant]
US 9450604B1 · Kumaran · 2016 [cited by examiner]
US 20020123922A1 · Poage · 2002 [cited by examiner]
US 20060174192A1 · Mortensen · 2006 [cited by applicant]
US 20100070491A1 · Cragun · 2010 [cited by examiner]
US 20100325169A1 · Loh · 2010 [cited by examiner]
US 20130290829A1 · Peng et al. · 2013 [cited by applicant]
US 20200364269A1 · Kwan · 2020 [cited by examiner]
Popoola, et al. “Code Synthesis for Sparse Tensor Format Conversion and Optimization” Conference 2017, Jul. 2017, Washington, DC, USA. [cited by applicant]
Sanderson, et al. “Practical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation” Practical Sparse Matrices in C++ with Hybrid Storage and Template-Based Expression Optimisation. Mathem… [cited by applicant]
“Convert Sparse Matrix to Full Storage—MATLAB Full” Mar. 18, 2024, 4 pages, https://www.mathworks.com/help/matlab/ref/full.html. [cited by applicant]
“Creating Compact View of a Sparse Table in Tableau” Mar. 18, 2024, 5 pages, https://vizdiff.blogspot.com/2022/01/compacting-sparse-table-in-tableau.html. [cited by applicant]
Fredman, et al. “Storing a Sparse Table with O(1) Worst Case Access Time” Journal of the Association for Computing Machinery, vol. 31, No. 3, Jul. 1984, pp. 538-544. [cited by applicant]
“Eigen: Sparse Matrix Manipulation” Mar. 18, 2024; 8 pages, https://eigen.tuxfamily.org/dox/group_TutorialSparse.html. [cited by applicant]
“Fast Character Case Conversion, or how to Really Compress Sparse Arrays” Mar. 18, 2024, 3 pages, https://news.ycombinator.com/item?id=26227764. [cited by applicant]
Cheshmi, et al. “ParSy: Inspection and Transformation of Sparse Matrix Computations for Parallelism” Jun. 11, 2024, 13 pages. [cited by applicant]
Chou, et al. “Automatic Generation of Efficient Sparse Tensor Format Conversion Routines” In Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI '20), Jun… [cited by applicant]
Fujiki, et al. “Near-Memory Data Transformation for Efficient Sparse Matrix Multi-Vector Multiplication” SC '19, Nov. 17-22, 2019, Denver, CO, USA. [cited by applicant]
Zhao, et al. “Processing and Storing Sparse Data in SAS® Using SAS® Text Miner Procedures” SAS Institute, In. Paper SAS195-2014, 13 pages. [cited by applicant]
King, et al. “Dynamic Sparse-Matrix Allocation on GPUs” University of Utah, Jun. 11, 2024, 19 pages. [cited by applicant]
Tobi Goodness Popoola—“Sparse Format Conversion and Code Synthesis” A dissertation submitted in partial fulfillment ofthe requirements for the degree of Doctor of Philosophy in Computing, Boise State University May 2023… [cited by applicant]