Skip to contents

Computes a DataFingerprint: a content hash of x plus the structural facts (dimensions, column names) that make a mismatch between two runs diagnosable. Used to record which data a run actually used, so undocumented drift between experiments is visible.

Usage

data_fingerprint(x, method = "object", algorithm = "sha256", source = NULL)

Arguments

x

tabular data: The dataset. Required for every method, so that dimensions and column names are always recorded, even when hashing file bytes.

method

Character {"file", "object", "table"}: What to hash. "object" hashes the serialized R object (cheap, R-only). "file" hashes the raw bytes of source. "table" hashes the canonical Arrow IPC representation (cross-language; requires the arrow package), and is the only method under which one table held as a data.frame, a data.table, a tibble or a matrix gives one hash.

algorithm

Character {"sha256", "sha512", "sha384", "sha224", "sha3-256", "sha3-512", "blake2b", "blake2s", "sha1", "md5"}: Hash algorithm. "blake2b" and "blake2s" are the fast options; "sha1" and "md5" are for interoperability with systems that record those.

source

Optional Character: Path x was read from. Required when method is "file".

Value

DataFingerprint object.

Author

EDG

Examples

fp <- data_fingerprint(iris)
fp
#> <DataFingerprint>
#>        hash: e3449b68076a… (sha256, object)
#>         dim: 150 x 5
#>      source: NULL
#> computed_by: R / data.frame
# A logically identical table in a different R container hashes differently
# under "object", which is what `@data_structure` records. FALSE:
data_fingerprint(iris)@hash ==
  data_fingerprint(data.table::as.data.table(iris))@hash
#> [1] FALSE