====== Tabli - Data Compare Command (Diff)======
===== About =====
''data compare'' is a [[docs:tabli:command|tabli command]] that supports the [[docs:op:compare|data compare operations (diff)]] against one or several [[docs:resource:resource|data resources]].
You can compare:
* [[docs:resource:content|content data resource]]
* the [[docs:resource:structure|structure of data resource]]
Howto : [[howto:getting_started:10_resource_comparison]]
===== Syntax =====
tabli data compare -h
Tabli data compare
==================
Performs a comparison (diff) between data resources.
Prerequisites:
* The data resources to compare should have been sorted in a ascendant order on the unique columns
* The data resources to compare should have the same number of columns
Unique Columns:
It's highly recommended to set the `--unique-column` option.
The `unique columns` are the unique identifier for a record and drives the gathering of the record to compare.
Without unique columns, the comparison can not tell if a record is absent from one set or another.
By default, this is
* the record id (ie row id, line id) for a data comparison
* the column name for a data structure comparison
With the `--report-level` option, you can control the output:
* `resource` will return a data comparison reported resource by resource (default),
* `record` will return a data comparison reported record by record (A diff),
* `all` will return them both
With the `--data-source` option, you can control the compared data:
* `content` will perform a comparison on the content of the data resource,
* `content` will perform a comparison on the structure of the data resource (by attribute name)
* `attribute` will perform a comparison on the attributes of the data resource (by attribute key)
Exit:
If there is a non-equality (ie a diff), the process will exist with an error status.
Data Comparison Row by Row Report:
The row by row report adds the following columns:
* `comp_id`: a row id of the comparison report
* `comp_origin `: the origin of the record (the source, the target or both)
* `comp_comment`: a high level comment that explains the difference
* `comp_diff_id`: the id of a difference - not null if a difference has been seen. Two records with the same diff id have been compared
* `comp_origin_id`: the record id if the comparison can not determine an unique column
Examples
--------
1 - Data comparison between two different queries:
tabli data compare (queryFile1.sql)@sqlite (queryFile2.sql)@sqlite
2 - Data comparison between a query and a table on two different systems
tabli data compare (queryFile.sql)@sqlite table@postgres
Syntax
------
tabli data compare [options|flags]
where:
Arguments:
A data selector that select the data resources to compare
A target data URI that defines the target to compare - if not defined, an empty target
Options:
-ds,--data-source Set the origin of data to use for the comparison
-rl,--report-level Set the report level returned
--unique-column The unique column name of the data resource (Default to record id for data comparison and to `name` for a structure comparison)
Data Definition Options:
-sa,--source-attribute Set a source data resource attribute
-ta,--target-attribute Set a target data resource attribute
Selection Options:
-wd,--with-dependencies If set, the dependencies will be also selected
Global Options:
-cf,--conf The path to a configuration file
-cv,--connection-vault The path where the connection vault is located
-h,--help Print this help
-l,--log-level Set the log level
-ns,--not-strict A minor error will not stop the process.
-odu,--output-data-uri defines the output data uri for the feedback data (default: console)
-oo,--output-operation defines the data operations (replace, truncate) on an existing output resource before transfer.
-oop,--output-transfer-operation defines the output transfer operation (insert, update, merge, copy). Default to `copy` for a file system and `insert` for a database.
-pp,--passphrase A passphrase (master password) to decrypt the encrypted values