Inferring a dataset schema from input files
AssigneePalantir Technologies Inc.
InventorsNir Ackner, Eric Lin
Life of this patent
Estimating the term…
Abstract
Techniques for generating a schema for a data input file are described herein. In an embodiment, a server computer receives a data input file. The server computer system selects a sample excerpt from the data input which comprises a subset of the data input file. The server computer system analyzes the sample excerpt to determine a row delimiter for the data input file, a column delimiter for the data input file, and a plurality of data format types. Using the column delimiter, row delimiter, and plurality of data format types, the server computer system generates a candidate schema for the data input file.
Claims10
A method comprising:
- receiving a data input file to be stored in a database, the data input file having unknown schema;
- selecting a sample excerpt from the data input file, the sample excerpt comprising a subset of the data input file;
- analyzing the sample excerpt to determine header data for the data input file, determining the header data for the data input file comprising:
- determining that a first row in the sample excerpt does not contain a delimited numeric value;
- determining that a second row in the sample excerpt following the first row does contain a delimited value;
- in response to the determining that the first row in the sample excerpt does not contain a delimited value and the second row in the sample excerpt does contain a delimited value, determining that the first row consists of the header data for the data input file;
- identifying one or more jagged rows based on row delimiters that were erroneously placed in the sample excerpt instead of column delimiters;
- causing displaying, via a graphical user interface (GUI), text in the sample excerpt that led to creation of a jagged row of the one or more jagged rows;
- receiving, via the GUI, an addition or removal of a specific row delimiter of the row delimiters to the text;
- updating the sample excerpt based on the addition or the removal;
- analyzing the sample excerpt to determine a row delimiter for the data input file, the row delimiter comprising one or more symbols that delimit each particular row in the data input file;
- using the row delimiter, identifying a plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- storing column delimiter whitelist data comprising a plurality of particular candidate column delimiters;
- storing column delimiter blacklist data comprising data identifying one or more symbols that are not candidate column delimiters;
- identifying one or more particular candidate column delimiters of the plurality of particular candidate column delimiters in the plurality of rows from the sample excerpt;
- identifying a plurality of candidate column delimiters as symbols in the sample excerpt that are not contained in either the column delimiter whitelist data or the column delimiter blacklist data;
- receiving, from a user device, a second row delimiter for the data input file;
- using the second row delimiter, identifying a second plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- identifying one or more second candidate column delimiters in the second plurality of rows;
- using the one or more second candidate column delimiters and the second row delimiter to generate a candidate schema for the data input file;
- using the candidate schema for the data input file, translating the data input file into the second plurality of rows and a plurality of columns;
- storing, in the database, the second plurality of rows and the plurality of columns,
- wherein the method is performed using one or more processors.
A system comprising:
- one or more processors;
- one or more storage media storing
- instructions which, when executed by the one or more processors, cause performance of:
- receiving a data input file to be stored in a database, the data input file having unknown schema;
- selecting a sample excerpt from the data input file, the sample excerpt comprising a subset of the data input file;
- analyzing the sample excerpt to determine header data for the data input file, determining the header data for the data input file comprising:
- determining that a first row in the sample excerpt does not contain a delimited numeric value;
- determining that a second row in the sample excerpt following the first row does contain a delimited value;
- in response to the determining that the first row in the sample excerpt does not contain a delimited value and the second row in the sample excerpt does contain a delimited value, determining that the first row consists of the header data for the data input file;
- identifying one or more jagged rows based on row delimiters that were erroneously placed in the sample excerpt instead of column delimiters;
- causing displaying, via a graphical user interface (GUI), text in the sample excerpt that led to creation of a jagged row of the one or more jagged rows;
- receiving, via the GUI, an addition or removal of a specific row delimiter of the row delimiters to the text;
- updating the sample excerpt based on the addition or the removal;
- analyzing the sample excerpt to determine a row delimiter for the data input file, the row delimiter comprising one or more symbols that delimit each particular row in the data input file;
- using the row delimiter, identifying a plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- storing column delimiter whitelist data comprising a plurality of particular candidate column delimiters;
- storing column delimiter blacklist data comprising data identifying one or more symbols that are not candidate column delimiters;
- identifying one or more particular candidate column delimiters of the plurality of particular candidate column delimiters in the plurality of rows from the sample excerpt;
- identifying a plurality of candidate column delimiters as symbols in the sample excerpt that are not contained in either the column delimiter whitelist data or the column delimiter blacklist data;
- receiving, from a user device, a second row delimiter for the data input file;
- using the second row delimiter, identifying a second plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- identifying one or more second candidate column delimiters in the second plurality of rows;
- using the one or more second candidate column delimiters and the second row delimiter to generate a candidate schema for the data input file;
- using the candidate schema for the data input file, translating the data input file into the second plurality of rows and a plurality of columns;
- storing, in the database, the second plurality of rows and the plurality of columns.
One or more non-transitory, computer-readable storage media storing sequences of instructions which, when executed by one or more processors, cause performance of a method, the method comprising:
- receiving a data input file to be stored in a database, the data input file having unknown schema;
- selecting a sample excerpt from the data input file, the sample excerpt comprising a subset of the data input file;
- analyzing the sample excerpt to determine header data for the data input file, determining the header data for the data input file comprising:
- determining that a first row in the sample excerpt does not contain a delimited numeric value;
- determining that a second row in the sample excerpt following the first row does contain a delimited value;
- in response to the determining that the first row in the sample excerpt does not contain a delimited value and the second row in the sample excerpt does contain a delimited value, determining that the first row consists of the header data for the data input file;
- identifying one or more jagged rows based on row delimiters that were erroneously placed in the sample excerpt instead of column delimiters;
- causing displaying, via a graphical user interface (GUI), text in the sample excerpt that led to creation of a jagged row of the one or more jagged rows;
- receiving, via the GUI, an addition or removal of a specific row delimiter of the row delimiters to the text;
- updating the sample excerpt based on the addition or the removal;
- analyzing the sample excerpt to determine a row delimiter for the data input file, the row delimiter comprising one or more symbols that delimit each particular row in the data input file;
- using the row delimiter, identifying a plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- storing column delimiter whitelist data comprising a plurality of particular candidate column delimiters;
- storing column delimiter blacklist data comprising data identifying one or more symbols that are not candidate column delimiters;
- identifying one or more particular candidate column delimiters of the plurality of particular candidate column delimiters in the plurality of rows from the sample excerpt;
- identifying a plurality of candidate column delimiters as symbols in the sample excerpt that are not contained in either the column delimiter whitelist data or the column delimiter blacklist data;
- receiving, from a user device, a second row delimiter for the data input file;
- using the second row delimiter, identifying a second plurality of rows from the sample excerpt that is not included in the header data for the data input file;
- identifying one or more second candidate column delimiters in the second plurality of rows;
- using the one or more second candidate column delimiters and the second row delimiter to generate a candidate schema for the data input file;
- using the candidate schema for the data input file, translating the data input file into the second plurality of rows and columns;
- storing, in the database, the second plurality of rows and column.
Dependencies are inferred from the claim text.