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.
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 thearrowpackage), 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
xwas read from. Required whenmethodis "file".
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