The dictionary is the one produced by to_dict(). This reconstructs the profile without needing the original data, so a profile that was stored earlier can be viewed again with get_tabular_report(), queried through summary_data, or used as the baseline in compare().
A restored scan has the statistics but not the data. Its summary_data is a Polars DataFrame, whatever the type of the original table. And when it’s compared with another scan, the statistics are compared as usual, but drift scores (which need the values themselves) are only computed for Boolean columns.
Parameters
d:dict[str, Any]
A dictionary with "metadata" and "columns" keys, as produced by to_dict().
String columns statistics regard the string's length.
The report is the same as the one for the original scan, even though restored was made from the dictionary alone. Converting the restored scan back to a dictionary gives the same dictionary:
restored.to_dict() == profile
True
So a profile can go through any number of save-and-restore cycles without losing information.